后台工作更改为守护进程没有nohup / disown?

时间:2012-10-17 03:44:29

标签: linux bash daemon nohup

对我来说很奇怪 一个脚本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或在代码中执行双fork()

在rhel6中发生了什么

1 个答案:

答案 0 :(得分:1)

是否设置了huponexit shell选项?

$ shopt
...
huponexit      off

Bash会在收到SIGHUP本身时向其作业发送一个SIGHUP信号,但除非你启用此选项,否则它会在正常退出时发出信号。

对于它的价值,RHEL6和RHEL5都禁用了它,至少在我刚测试的系统上是这样。我试过这个命令:

$ sleep 1000 &

当我退出并重新登录时,它没有被杀死,除非我故意启用shopt -s huponexit