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中发生了什么
答案 0 :(得分:1)
是否设置了huponexit
shell选项?
$ shopt
...
huponexit off
Bash会在收到SIGHUP本身时向其作业发送一个SIGHUP信号,但除非你启用此选项,否则它会在正常退出时发出信号。
对于它的价值,RHEL6和RHEL5都禁用了它,至少在我刚测试的系统上是这样。我试过这个命令:
$ sleep 1000 &
当我退出并重新登录时,它没有被杀死,除非我故意启用shopt -s huponexit
。