2012-10-17 48 views
2

一件奇怪的事情對我來說 腳本while.sh,它的內容是:後臺作業變成守護進程而沒有nohup/disown?

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

運行爲$ while.sh> & while.log &(不nohup的或否認或setsid或雙叉()) 退出並再次登錄可以看到這個過程仍然存在,它的ppid是1,它的tty是?

我的系統是RHEL6(RHEL5是一樣的,慶典

在centos5.x它必須使用的nohup或否認或做雙叉()在代碼

在RHEL6

發生什麼

回答

1

是該huponexit外殼選項?

$ shopt 
... 
huponexit  off 

bash將SIGHUP信號發送到其工作,如果它收到一個SIGHUP本身,而是它退出時也不會發出信號他們也不除非你啓用這個選項,否則不正確。

至少在我剛剛測試的系統上,它在RHEL6和RHEL5上都是禁用的。我試過這個命令:

$ sleep 1000 & 

,當我退出,併除非我特意啓用shopt -s huponexit重新登錄它沒有被殺。

+0

非常感謝你,我懂了 – xielingyun

相關問題