JOBのプロセスを終わらせない方法

こんにちは!

最近、解析に必要なデータを、embulkでガーっとDBに入れてる時に、
ターミナル上に流れているプロセス結果をボケーっと眺めていたら、
PCがスリープモードになってしまい、慌ててPCログインしたら
SSHが切断され、実行中のembulkが途中で終了するはめに、、、

そして、1時間くらいかかるembulk処理を再度やるハメに、、(トイレも行けない)
こんなことが度々あったので、SSHの切断と同時に実行中のプロセスを終了させたくない時の対処方をご紹介いたします。

「nohup &」でプロセスをバックグラウンドで実行!

 

これだけです。笑

nohup &を付けるだけで、SSHが切断されてもバッチ処理がKillされることなく、
ジョブが実行されます!

理由としては下記のページが参考になるかと思います。
https://www.codereading.com/nb/ignore-the-hangup-signal.html

また、nohup &を付けずにバッチを実行してしまった場合、
下記のように一度プロセスを停止して、JOBリストからJOB番号を選択し、
バックグラウンドで実行させます。

以上です。
これでバッチが終わるまで待たずに、実行させて家に帰ることができます!
みなさんもぜひ、利用してみてください〜!

 

やらかした〜〜〜!!

 

上記内容で、安心して家に帰った僕はアホでした。bgで動かせば、終了しないと思ってたのに、 実際はSSHを切断したタイミングで処理が終わっていました。
・・・・・。ちょっとヘコみました。でも、3分位で立ち直りました。ハート強いんで。笑

 

仕方なくいつも僕をシゴキまくる極悪な先輩に聞いたところ、案の定爆笑。 実は、bgだけでは不十分で 「jobs」 で表示される、自分のJOBテーブルに表示されているうちは、 SSHを切断したタイミングで終了してしまうらしい。

ということでした。 今回も僕のマッスルが大活躍でした。仕事も終わったし、 スクワットしとこーっと!

●この記事を書いた人