here と同じ質問がありますが、それ以上です。
SSH接続をログアウト/終了する場合、プログラムをバックグラウンドで実行する必要があります。終了する前に、bg
とjobs
を入力してバックグラウンドで実行中のタスクを確認しますが、SSHを終了するとプログラムが実行されず、SSHウィンドウを閉じるとプログラムが終了します。
SSHウィンドウを閉じた後もプログラムを実行したい場合はどうすればよいですか?私はNohup
screen
を使用していますが、それも機能しないか、何か不足していますか?
screen
を使用する場合、detachする必要があります CTRL+A+Dssh
を終了する前。
あるいは、画面で直接プロセスを実行したい場合は、
screen -dmSL [session name] [commands]
-d
はスクリーンセッションを開始し、すぐに切り離します-m
新しいスクリーンセッションを強制的に作成します-S
を使用すると、セッションに名前を付けることができます-L
は~/screenlog.0
へのロギングをオンにします例:
screen -dmSL workstuff myscript.sh
その後、次のいずれかを行うことができます。
後で使用して再開screen -x workstuff
または
ログファイルを確認less -r ~/screenlog.0
tmux
を使用します。 screen
がまだ活発に開発されているかどうかさえわかりません。これは好みのことですが、tmux
を使用する人として、約5分で設定され、完全に機能したことを証明できます。
Debianベースのシステム(リモートマシン):
Sudo apt-get install tmux
次にtmux
を入力して入力し、必要なプロセスを実行して、 Ctrl+B その後 D (これによりtmuxセッションが終了します)。その後、SSHからログアウトできます。
もう一度戻って確認する必要がある場合は、SSHを起動してtmux attach
と入力します。 tmux
セッションに戻ります。
ここで説明するように、tmux
にはさらに多くの機能があります。しかし、これはあなたの差し迫った問題を解決するはずです。
幸運を!
ついに、私はscreen
を使用してそれを解決しました:
画面モードでは、 CtrlAD。次に、SSHウィンドウを閉じます。
Nohupの使用:以下の最初のコマンドは、後続のログアウトでプログラムが停止しないように、プログラムabcdをバックグラウンドで開始します。
$ Nohup abcd&
$出口