web-dev-qa-db-ja.com

SSHを閉じるときにSSHバックグラウンドタスク/ジョブを続行する

here と同じ質問がありますが、それ以上です。

SSH接続をログアウト/終了する場合、プログラムをバックグラウンドで実行する必要があります。終了する前に、bgjobsを入力してバックグラウンドで実行中のタスクを確認しますが、SSHを終了するとプログラムが実行されず、SSHウィンドウを閉じるとプログラムが終了します。

SSHウィンドウを閉じた後もプログラムを実行したい場合はどうすればよいですか?私はNohupscreenを使用していますが、それも機能しないか、何か不足していますか?

27
Huei

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

47
justbrowsing

tmuxを使用します。 screenがまだ活発に開発されているかどうかさえわかりません。これは好みのことですが、tmuxを使用する人として、約5分で設定され、完全に機能したことを証明できます。

Debianベースのシステム(リモートマシン):

Sudo apt-get install tmux

次にtmuxを入力して入力し、必要なプロセスを実行して、 Ctrl+B その後 D (これによりtmuxセッションが終了します)。その後、SSHからログアウトできます。

もう一度戻って確認する必要がある場合は、SSHを起動してtmux attachと入力します。 tmuxセッションに戻ります。

ここで説明するように、tmuxにはさらに多くの機能があります。しかし、これはあなたの差し迫った問題を解決するはずです。

幸運を!

14
evamvid

ついに、私はscreenを使用してそれを解決しました:

画面モードでは、 CtrlAD。次に、SSHウィンドウを閉じます。

7
Huei

Nohupの使用:以下の最初のコマンドは、後続のログアウトでプログラムが停止しないように、プログラムabcdをバックグラウンドで開始します。

$ Nohup abcd&

$出口

5
Ashildr