web-dev-qa-db-ja.com

sshからログアウトした後、プログラムを実行し続ける方法は?

可能性のある複製:
SSHクライアントを閉じた後にバックグラウンドプロセスが停止しないようにする

完了するまでに時間がかかるプログラムがあります。 sshを介してrootとして実行されています。
ログアウトした後も実行を継続したいのですが、これは可能ですか、これをどのように達成しますか?

156
omg

フォアグラウンドでプログラムを実行していると仮定すると、ctrl-Zを押します、その後:

[1]+  Stopped                 myprogram
$ disown -h %1
$ bg 1
[1]+ myprogram &
$ logout

ジョブが1つしかない場合は、ジョブ番号を指定する必要はありません。 disown -hbgを使用してください。

上記の手順の説明:

Ctrl-Zを押します。システムは実行中のプログラムを中断し、ジョブ番号と「停止」メッセージを表示して、bashプロンプトに戻ります。

disown -h %1コマンドを入力します(ここでは、1を使用しましたが、Stoppedメッセージに表示されたジョブ番号を使用します)。 SIGHUPシグナル(ログアウトしても停止しません)。

次に、同じジョブ番号を使用してbgコマンドを入力します。これにより、バックグラウンドでプログラムの実行が再開され、それを確認するメッセージが表示されます。

これでログアウトでき、実行を継続します。

324

Nohup を使用して、バックグラウンドで実行してみてください:

Nohup sleep 3600 &
78
paxdiablo

プログラム screen を試してみます。

40
Janusz

バックグラウンドで開始します。

./long_running_process options &

ログアウトする前にジョブを否認します。

disown
14
diciu

Nohup が必要です。 http://nixcraft.com/linux-software/313-ssh-Nohup-connection.html を参照してください

13

screen を使用して、デタッチおよび再アタッチできます

3
brndnmg