nohupと&について
Linuxでスクリプトやプログラムを実行するとき、nohup
と&
を使うことで、プログラムをバックグラウンドで動かし続けることができる。これは、リモート接続を切っても処理が止まらないようにする場合に役立つ。
nohupとは?
nohup
は「no hang up(ハングアップしない)」の略で、シェルを終了してもプログラムが実行し続けられるようにするためのコマンドだ。通常、シェルを終了すると実行中のプロセスも終了するが、nohup
を使えば、ログアウトしてもプログラムは停止しない。
基本構文
nohup コマンド &
-
nohup コマンド
: プログラムがシェルの終了に影響されないように実行する。 -
&
: コマンドをバックグラウンドで実行するための記号。
&(アンパサンド)とは?
&
は、コマンドをバックグラウンドで実行するための記号だ。これを付けると、コマンドはバックグラウンドで動き続け、シェルがユーザーに戻ってくる。これにより、別のコマンドをすぐに実行することができる。
基本構文
コマンド &
nohupと&の組み合わせ
nohup
と&
を組み合わせることで、シェルを閉じてもプログラムがバックグラウンドで実行され続けるようにすることができる。
例
nohup python script.py &
このコマンドは、script.py
をバックグラウンドで実行し続け、シェルを閉じても処理が止まらないようにする。実行結果やエラーメッセージは、デフォルトでnohup.out
というファイルに記録される。
実用例
- 長時間実行するスクリプトをリモートサーバーで動かす場合: リモート接続を切ってもスクリプトが動き続けるようにする。
- バッチ処理やバックアップ: システム管理者が定期的に実行する処理に便利。
注意点
- 出力を明示的に指定しないと、
nohup
は標準出力とエラー出力をnohup.out
ファイルに保存する。出力ファイルを指定したい場合は、リダイレクトを使うのがよい。 - 例:
nohup コマンド > output.log 2>&1 &