通常、リモート接続(ssh)をして、何も操作などしない期間が続くと接続が切れるようになっています。
とても長い処理のプログラムを実行する場合、プログラムが終わる前に接続が切れて強制終了してしまうことが多々あります。
なぜなら、ssh接続が切れたり、ターミナルが終了、ログアウトした場合、実行中のコマンドも終了してしまうからです。
そうしたときに役立つコマンドとしてnohupがあります。
nohupコマンドでは、ssh接続が切れたり、ターミナルが終了、ログアウトした場合も、実行中のコマンドを終了させないコマンドです。
コマンドを実行している際に、ターミナルを閉じたりログアウトしたりすると、そのシェルで実行中のプロセスにはHUPシグナルが送られます 。
HUPシグナルでコマンドは強制終了させられる訳です。
しかし、nohupコマンドを用いた場合、HUPシグナルを無視し、コマンドは終了しないようになっています。
nohup コマンドの使い方
書式は以下の通りです。
$ nohup コマンド
このコマンドを実行すると以下のように返されますが、問題ありません。
nohup: ignoring input and appending output to 'nohup.out'
コマンドの標準出力は、nohup.outに記述されます。nohup.outは実行したコマンドのログです。
末尾に&をつけることでバックグラウンドで処理してくれます。因みに&は、どのコマンドでも末尾に記述することでバックグラウンド処理できます。
まとめ
長い処理のプログラムを実行する場合、nohupコマンドを用いましょう。
nohup.outは、ログです。
おススメ書籍
Linuxを学ぶ上で、おススメの書籍を紹介します。
この書籍は、LPICというLinuxのプロフェッショナルとして認定される資格の教科書になります。
資格の教科書ですが、Linuxを学ぶ上でもってこいの書籍です。自分は、この書籍でLPICを取得しました。
Linux教科書 LPICレベル1 Version5.0対応
初めてLinuxを触る人でも分かりやすく表現されており、読みやすいです。
新しいLinuxの教科書