Linux 后台作业在没有nohup/disown的情况下更改为守护进程?
我觉得很奇怪 一个脚本while.sh,它的内容是:Linux 后台作业在没有nohup/disown的情况下更改为守护进程?,linux,bash,daemon,nohup,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或do double fork() rhel6中发
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或do double fork()
rhel6中发生的是
huponexit
shell选项集
$ shopt
...
huponexit off
如果Bash本身接收到SIGHUP,它将向其作业发送SIGHUP信号,但除非启用此选项,否则它不会在正常退出时向作业发送SIGHUP信号
值得一提的是,至少在我刚刚测试的系统上,RHEL6和RHEL5都禁用了该命令。我尝试了以下命令:
$ sleep 1000 &
当我注销并重新登录时,它没有被杀死,除非我故意启用了
shopt-s huponexit
非常感谢,我得到了它