メモの日々


2014年03月10日(月) [長年日記]

[shell][unix] bashとzshのSIGHUPの扱い

端末からログアウトするとき実行中のジョブにSIGHUPシグナルが通知されるかどうかはシェルの設定で変えられるのでメモ。

bashはhuponexitオプション

bashのマニュアルに、

シェルオプションの huponexit が shopt を使って設定されていた場合、対話的なログインシェルが終了するときに、 bash は SIGHUP を全てのジョブに送ります。

とある。huponexitオプションを設定しない限りログアウト時のSIGHUP通知は行われない模様。

zshはHUPオプション

zshのマニュアルに、

HUP <Z>

Send the HUP signal to running jobs when the shell exits.

とあって、この設定はデフォルトで有効みたい。

nohupとdisown

シェルがSIGHUPを通知する設定のとき、特定のジョブに対してだけSIGHUPを通知しないようにしたければnohupdisown内部コマンドが使える。

zshの&!

zshの場合は、nohupの代わりに&!が使える(バックグラウンド指定の&に続けて!を付与)。