今日の出来事 nohup コマンド

今日仕事中にオススメされて使ってみたのでメモしておきます。

まーなぜ使ったかというと、ある処理をcronで設定しているスクリプトに追加しようとしてました。
そこに追加した処理は画像生成したり合成したりするスクリプトでした。。多少重いです。。

ただ重要な処理の前後に追加しなければいけないのと、付加が高い時間帯なので
落ちた場合困ったなーをさけるため

スクリプトからシェルを直接実行してプロセスを分けて実行する事にしました。

その際にコマンドの前にnohupをつけると接続が切れたとしても実行されます

nohup command [arg...]

ただ&をつけてもバックグラウンドで動作する事ができるのでログアウト後でも処理を実行できます。

しかし通常ターミナルなどが切断した場合、HUPシグナルがプロセスに送られ、プロセスが終了します。

nohup コマンドはハングアップシグナル(SIGHUP, HUP)を無視して処理を実行します、

あとnohup コマンドは書式でコマンド末尾に&をつけなければらしいです。。

ターミナルから重い処理を走らせてnohupをつけていなかった場合でも

1. ctrl+z で一時停止する  
2. bg でバックグラウンドで実行する  
3. disown -h job番号 (job番号はjobコマンドで確認)

を実行すれば指定のジョブに ハングアップシグナル が送られないようにすることができるみたいです。