最終更新:2025-02-22
nohupコマンドは、Unix系システムにおいて、ユーザーがログアウトした後も実行中のプロセスを継続させるためのツールである。
名前の由来は「no hangup(ハングアップ無視)」であり、通常ログアウト時に送信されるSIGHUPシグナルを無視することで、プロセスが終了せずに実行を続けることができる。
これは、長時間にわたって動作するジョブや、バックグラウンドで実行されるデーモンプロセスに有用である。
基本的な使い方
nohupは実行したいコマンドの前に付与することで利用する。標準的な構文は以下の通りである。
nohup [コマンド] [引数…]
出力はデフォルトで nohup.out にリダイレクトされるが、明示的に出力先を指定することも可能である。
ハンズオン
以下に、nohupコマンドの具体的な使用例を示す。
1. シンプルなnohupの利用例
たとえば、my_script.sh というシェルスクリプトを、ユーザーがログアウトした後も継続して実行させるためには、次のようにする。
nohup ./my_script.sh &
ここで、& を付与することで、プロセスをバックグラウンドで実行させる。
2. bashシェルによるバックグラウンド実行
bashシェルにおいて、長時間実行されるプロセスの出力をファイルに保存しながらバックグラウンド実行する具体例は以下の通りである。
nohup ./long_running_process.sh > output.log 2>&1 &
この例では、標準出力および標準エラー出力が output.log にリダイレクトされ、プロセスはバックグラウンドで実行される。
3. tcshでのバックグラウンド実行
tcshシェルにおいても、nohupコマンドは同様に利用できる。tcshではリダイレクト構文が若干異なるため、以下のように記述する。
nohup ./long_running_process.sh >& output.log &
ここでは、>& を用いて標準出力と標準エラー出力の両方を output.log にリダイレクトしている。
4. Pythonスクリプトをnohupで実行する例
Pythonスクリプトを nohup で実行し、ログアウト後もスクリプトの実行を継続させる場合は、次のように行う。(bashの場合)
nohup python my_script.py > my_script.log 2>&1 &
この例では、my_script.py がバックグラウンドで実行され、その出力は my_script.log に保存される。
