Linuxでシステム運用をしていると、数時間〜数日間に及ぶバッチ処理を実行することがあります。手動でプログラムを起動する場合にディスプレイの前にずっと付きっきりでは過労死まっしぐらです。またうっかりTerminalを閉じてしまうと大惨事になってしまうため通常はバックグラウンドで実行します。
その際の具体的なコマンドは以下の通り。
$ nohup (コマンド) &
コマンドの最後に&を付けるだけでバックグラウンドで実行してくれます。ただこれだけだとTerminalを閉じてしばらくすると自動的にプログラムも終了してしまいます。そこでコマンドの冒頭に nohup を付けることで強制終了を防ぐことができます。
標準出力に表示されるはずだった内容はカレントディレクトリに nohup.out というファイル名で記録されます。
またコマンドの実行が終了すると以下のような通知が来ます。
$ nohup sleep 10 &
[1]+ 終了 sleep 10