某一天开发同学问了一个问题,他们在线上跑一个job,没用screen,nohup,把iTerm 窗口关了,job 没挂。再登录进去看,PPID 变成1,即进程被init 进程接管。
在对应机器上执行shopt
, 发现:
...
gnu_errfmt off
histappend off
histreedit off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lastpipe off
lithist off
login_shell on
mailwarn off
...
注意CentOS 7 默认将huponexit
设为off
了,这样在用户将Shell 退出结束会话时,系统不会发送 SIGHUP 给所有进程,这效果其实类似使用了nohup,nohup 的作用就是忽略HUP 信号。
huponexit
If set, bash will send SIGHUP to all jobs when an interactive login shell exits.