シェルログアウトからのSIGHUP(または同様のもの)が発生したときのdisownで実行されているプロセスの動作を理解したいと思います。
このプロセスは、単に次のことを行います。
OK、プロセスを実行してから、ctrl-z、bg、disown、logoutを実行します。
15秒後、/ tmp内の空のファイルは存在しません。 2番目のコマンド(print)を削除すると、プロセスは終了し、空のファイルが存在します。したがって、プロセスがシェルを接続せずにstdoutに何かを送信すると、カーネルからシグナルを受信してそれを強制終了します。
プロセスはPerlである必要があります、PHPまたはC(BashまたはPythonは発生しないようです)
Nohupを使用したバックグラウンド実行で出力がファイルに送信され、この問題が発生しないことはわかっていますが、問題は、出力を使用してプロセスを実行したときのdisownコマンドの動作を理解することです。 (ところで、-hで勘当しても同じ結果になります)。
プロセスがSIGTTOU
で終了しました。
これを防ぎたい場合は、所有しなくなったTTYに何かを印刷しないように注意する必要があります。