プロセスをバックグラウンドに置くと、プロセスはSIGHUPコマンドを無視します。そのプロセスは引き続き実行されます。
テスト結果:
ログインして実行bash
スクリプトo.sh
を背景と出口に:バックシステムに
system:10.11.2.122 > o.sh &
system:10.11.2.122 > exit
ログインとo.sh
プロセスをチェックしてください。
system:10.11.2.122 > ps -ef | grep o.sh
root 19115 1 0 10:10 ? 00:00:00 /usr/local/bin/bash /root/scripts/o.sh
root 27774 20197 0 10:23 pts/2 00:00:00 grep o.sh
このメソッドは、実行中のdaemonisesプロセス。
bash
の場合、この現象はhuponexit
シェルオプションによって異なります。これらおよびその他のオプション設定は、CentOS/RedHat 6.7のshopt
コマンドを使用して確認できます。
huponexit
は、CentOS/RedHat 6.7ではデフォルトでオフになっているようです。
shopt
の出力のサブセット:
histappend off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nocasematch off
nullglob off
だからあなたの質問に答えるために:私は、SSHセッションを閉じると
、プロセスとその子供がHUPシグナルや意志が送信されます彼らは走り続けますか?
あなたのhuponexit
の設定によって異なります。 huponexit
がoff
の場合、はであり、プロセスは実行を継続します。そうでない場合、はい。
はいの場合、どうすれば完全に切り離すことができますか?
処理を実行するときにnohup
コマンドを使用します。
nohup your_process &
「nohup」を使用していますか?しかし、nohupがnohup.outファイルの出力をリダイレクトするので、注意してください。 – Pawamoy
screenコマンドを使用することもできます。 –
私はどのPIDをnohupにするのか分かりません。 'ps'は2つのプロセスだけを表示し、他のプロセスはrootとして実行しています... –