ターミナルを閉じてもプロセスを終了させないnohupコマンド

バッチ処理しようと思って、サーバにSSHで接続して、スクリプトを実行しました。

$ some_batch

実行したはいいものの・・・。

問題は、処理が終わる前に接続を切りたくなってしまった場合です。
たとえば、ネットワーク環境が急に悪くなったとか、喫茶店の閉店時間になってしまったとか、理由は色々あります。

ログアウトするとプロセスも終了してしまう

ログアウトしたり、コネクションが切れてしまうと、プロセスが終了されてしまいます。一度接続を切って、再度ログインして、バッチ処理のログを見てみると実際に処理の途中で止まってしまっています。
これは困った。数日間、処理を回し続けたい場合などもあります。こういう場合は、どうしたら良いんだろう?

nohupコマンド

と思って調べたら、nohupコマンドを使えば、プロセスが終了しないようにできるそうです。
ログアウトしてもバックグラウンド ジョブを継続する方法

$ nohup some_batch

これは、HUPシグナル(ハングアップシグナル)を無視させるというコマンドです。
通常は、ログアウトする時に、プロセスにHUPシグナルを送り、プロセスを終了させようとします。それを指定のプロセスに送られないようにすることで、ログアウトしたりコネクション切ったりしても、プロセスが終了せずに実行し続けるようにできます。

コメント

タイトルとURLをコピーしました