【问题标题】:background jobs change to daemon without nohup/disown?后台作业更改为没有 nohup/disown 的守护进程?
【发布时间】:2012-10-17 03:44:28
【问题描述】:

对我来说很奇怪 一个脚本while.sh,它的内容是:

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

运行为 $while.sh >& while.log & (没有 nohup 或 disown 或 setsid 或双 fork()) 退出再登录可以看到这个进程还在,ppid是1,tty是?

我的系统是rhel6(rhel5也一样,bash

在 centos5.x 中它必须使用 nohup 或 disown 或在代码中执行 double fork()

在 rhel6 中发生了什么

【问题讨论】:

    标签: linux bash daemon nohup


    【解决方案1】:

    huponexit shell 选项设置了吗?

    $ shopt
    ...
    huponexit      off
    

    如果 Bash 自己收到 SIGHUP 信号,它将向其作业发送 SIGHUP 信号,但除非您启用此选项,否则它不会在正常退出时向它们发送信号。

    无论如何,这在 RHEL6 和 RHEL5 上都被禁用了,至少在我刚刚测试的系统上是这样。我试过这个命令:

    $ sleep 1000 &
    

    除非我故意启用shopt -s huponexit,否则在我注销并重新登录时它没有被杀死。

    【讨论】:

    • 非常感谢,我明白了
    猜你喜欢
    • 2010-10-31
    • 2023-01-02
    • 2011-09-09
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多