nohup
IBMのサイトより引用
nohup コマンドは、Command パラメーターおよび関連する Arg パラメーターで指定されたコマンドをハングアップ・シグナル (SIGHUP) をすべて無視して実行するか、-p オプションで指定されたプロセスを変更して SIGHUP シグナルをすべて無視するようにします。 SIGHUP は、プロセスの制御端末がクローズされたときにプロセスに送信されるシグナルです。
IBM1
具体的な実行方法
長時間動作させたいプログラムを実行するシナリオを考える。
標準出力と標準エラー出力に書き出されるログをテキストファイルに書き出し、かつこれをバックグラウンドで実行したい。
こういった時には、以下の形式でコマンドを実行する。
nohup ${実行コマンド} > output.log 2>&1 &
例:main.pyというPythonプログラムを動かす
nohup python3 main.py > output.log 2>&1 &
この場合、python3 main.pyが実行したいコマンドになる。
以下細い説明。
-
nohup: SIGNUPを無視 -
python3 main.py: pythonプログラムを実行するコマンド -
> output.log: 実行したpythonプログラムの標準出力をリダイレクトしoutput.logに書き出す -
2>&1: 標準エラー出力を標準出力に出力する命令 -
&: 上記の命令をバックグラウンドプロセスで実行する命令