disown
シェルが終了したときに、シェルが非所有のジョブにSIGHUPを送信しないようにします。
否認されたジョブをシェルのジョブ制御から削除します。
最初は2番目の結果ですか?言い換えると、シェルから開始されたプロセスが何らかの方法でシェルのジョブ制御から削除された場合、シェルは終了時にSIGHUPをプロセスに送信しませんか?
disown -h
シェルのジョブ制御下でプロセスを維持します。これdisown -h
は、プロセスがシェルから送信されたSIGHUPを引き続き受信するが、プロセスによるSIGHUPのアクションを「無視」するように設定するということですか?それはに似ていnohup
ます。
$ sleep 123 & disown -h
[1] 26103
$ jobs
[1]+ Running sleep 123 &
$ fg 1
sleep 123
$ ^Z
[1]+ Stopped sleep 125
$ bg 1
[1]+ sleep 123 &
$ exit
$ ps aux | grep sleep
t 26103 0.0 0.0 14584 824 ? S 15:19 0:00 sleep 123
やるdisown -h
とnohup
我々は、端末を使用してその差を無視すれば、効果的に同じ動作しますか?
ありがとう。
nohup
、を使用していない場合、stdin / stdout / stderrをTTYからリダイレクトする必要があることです(元のシェルが接続されている場合)。(OTOH、私は実際に、のようなひどいハードコードされたデフォルトに依存するよりも良いプラクティスだと考えています./nohup.out
)。