nohupコマンド【no hang-up】
nohupコマンドとは?

Linuxなどのオペレーティングシステム(OS)では、ターミナルソフトを使ってサーバに遠隔ログインして操作するという使い方が一般的である。通常の動作では、端末を閉じたりセッションを切断すると、実行中のプロセスに「SIGHUP」(ハングアップシグナル)が送信され、プロセスは強制終了する。通信が途切れた場合も同様である。
nohupコマンドは、このSIGHUPを無視してプロセスを動作し続けさせる。使い方は「nohup コマンド名 &」のように、実行したいコマンドの前にnohupを付けるだけでよい。末尾の「&」はバックグラウンド実行の指定であり、nohupと組み合わせて使うのが一般的である。これにより、コマンド起動後に端末を閉じたりログアウトしたりしても、処理の完了を待つ必要がなくなる。
セッション終了後は標準出力の出力先が失われるため、nohupはコマンドの標準出力および標準エラー出力をファイルに自動的にリダイレクトする。デフォルトではカレントディレクトリに「nohup.out」が作成され、書き込みができない場合はホームディレクトリに保存される。後から再度ログインしてこのファイルを参照することで、実行結果やエラーの内容を確認できる。出力先を変更したい場合は、「nohup コマンド名 > 出力ファイル名 2>&1 &」のようにリダイレクト演算子で任意のファイルを指定すればよい。
同様の目的を達成する手段として、「GNU Screen」や「tmux」といったターミナルマルチプレクサ、あるいはシェルのdisownコマンドなども使われている。常駐プロセス(デーモン)の管理にはsystemdの利用が推奨される場面も増えているが、nohupはほぼすべてのUNIX系環境に標準で備わっており、追加のソフトウェアなしに手軽に利用できるため、現在も様々な場面で活用されている。