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


27

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

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

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


スーパーユーザーへようこそ!答えを質問に入れないでください。[ 質問に回答 ]ボタンを使用して(約7時間以内に)できるようになったら、以下の回答として投稿してください。ありがとうございました。(また<br/>、投稿にs を追加する必要がないことにも注意してください。必要に応じて段落を作成してください。その間、適切な大文字を使用してください。投稿が読みやすくなります。)
slhck

ところで何を使用する必要はありませんbgnohup使用している場合screen。また、この質問は関連しています。
ちょうど

あなたはこのスレッドをチェックします@スタックオーバーフローstackoverflow.com/questions/285015/...
Ashildr

回答:


46

あなたが使用している場合screen、あなたはする必要が切り離しCTRL+A+ Dあなたが終了する前にssh

または、画面で直接プロセスを実行する場合は、使用できます

screen -dmSL [session name] [commands]
  • -d スクリーンセッションを開始し、すぐにデタッチします
  • -m 新しいスクリーンセッションを強制的に作成します
  • -S セッションに名前を付けることができます
  • -L へのロギングをオンにします ~/screenlog.0

例:

screen -dmSL workstuff myscript.sh

その後、次のいずれかを実行できます。

後で再開する screen -x workstuff

または

ログファイルを確認してください less -r ~/screenlog.0


14

を使用しtmuxます。screenまだ活発に開発されているのかどうかさえわかりません。それは一種の好みのことですが、を使用している人としてtmux、私はそれが約5分でセットアップされ、完璧に機能したことを証明できます。

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

sudo apt-get install tmux

その後、入力tmux入力し、必要な処理何でも実行し、ヒットCtrl+ Bその後、D(この葉tmuxのセッション)。その後、SSHからログアウトできます。

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

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

がんばろう!


7

最後に、私はそれを使用してそれを解決しましたscreen

画面モードでは、を使用してデタッチしCtrlADます。その後、SSHウィンドウを閉じることができます。


5

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

$ nohup abcd&

$出口

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.