disown
bir kabuk, kabuk sona erdiğinde SIGHUP'u vazgeçilmez işine göndermemesine neden olur ve
reddedilen işi kabuğun iş denetiminden kaldırır.
Birincisi ikincisinin sonucu mu? Başka bir deyişle, bir kabuktan başlatılan bir işlem, kabuğun iş denetiminden herhangi bir şekilde kaldırılırsa, kabuk, kabuk sona erdiğinde işleme SIGHUP göndermez mi?
disown -h
bir işlemi hala kabuğun iş kontrolü altında tutar. disown -h
Bir işlemin kabuktan gönderilen SIGHUP değerini almaya devam etmesi, ancak SIGHUP eylemini bu işlem tarafından "yoksay" olarak ayarladığı anlamına mı geliyor ? Kulağa benziyor 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
Bir terminal kullanımındaki farklılıklarını göz ardı edersek, aynı şeyi yapın disown -h
ve nohup
etkili bir şekilde çalışın mı?
Teşekkürler.
nohup
, stdin / stdout / stderr'i TTY'den (orijinal kabuğunuz birine bağlıysa) kendinize yönlendirmeniz gerektiğidir. (OTOH, aslında bu gibi berbat bir sabit kodlu temerrüde güvenmekten daha iyi bir uygulama olduğunu düşünüyorum./nohup.out
).