FPs

記一個退出終端進程不退出的問題

某一天開發同學問了一個問題,他們在線上跑一個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.
2016-05-23 shell linux