nohupし忘れた時間のかかる処理をdisownしてexit後も実行させ続ける
linux時間がかかるコマンドを実行する場合、通常はnohup
で実行し
ターミナル終了時に飛ぶSIGHUP(SIGnal Hang UP)を無視させることで
exitしても実行させ続けることができる。
$ nohup ./foo &
ただnohupを付けずに実行し始めてから思ったより時間がかかるということもある。
その場合は、Ctrl+Z
で一旦停止してからbg
でバックラウンドで実行するようにしてdisown -h
でSIGHUPが送られないようにできる。
disown
はシェルのジョブテーブルから削除するコマンドで、そのままでもSIGHUPが送られないようにできるが、
-hを付けるとジョブテーブルから削除せずに済む。
$ jobs
[1]+ 停止 ./foo
$ bg 1
$ jobs
[1]+ 実行中 ./foo
$ disown -h %1