fangpsh's blog

记一个退出终端进程不退出的问题

某一天开发同学问了一个问题,他们在线上跑一个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.