2

私にとって奇妙なことは、スクリプトwhile.shです。その内容は次のとおりです。

while [ 1 ];do
sleep 1
echo `date`
done

$while.sh >& while.log & (nohup または disown または setsid または double fork() なし) として実行し、終了して再度ログインすると、このプロセスがまだ存在することがわかります。ppid は 1 で、tty は ?

私のシステムはrhel6です(rhel5は同じです、bash

centos5.x では、nohup または disown を使用するか、コードで double fork() を実行する必要があります

rhel6 で何が起こるか

4

1 に答える 1

1

huponexitシェルオプションは設定されていますか?

$ shopt
...
huponexit      off

Bash は、それ自体が SIGHUP を受け取るとジョブに SIGHUP シグナルを送信しますが、このオプションを有効にしない限り、正常に終了したときにジョブにシグナルを送信しません。

価値があるのは、少なくとも私がテストしたばかりのシステムでは、RHEL6 と RHEL5 の両方で無効になっていることです。私はこのコマンドを試しました:

$ sleep 1000 &

意図的に有効にしない限り、ログアウトして再度ログインしても強制終了されませんでしたshopt -s huponexit

于 2012-10-17T03:52:13.420 に答える