HumansXドキュメントセンター 公式サイトへ ↗

nohup

nohup は英語の no hang up(ハングアップしない)の略で、システムのバックグラウンドでコマンドを中断せずに実行するために使用します。ターミナルを終了してもプログラムの実行には影響しません。

デフォルトでは(リダイレクトしない場合)、現在のディレクトリに nohup.out というファイルが出力されます。現在のディレクトリの nohup.out ファイルに書き込めない場合は、出力が$HOME/nohup.outファイルにリダイレクトされます。追記用に作成・オープンできるファイルがない場合、command 引数で指定したコマンドは呼び出されません。標準エラーがターミナルの場合、指定したコマンドが標準エラーに書き込むすべての出力は、標準出力と同じファイルディスクリプタにリダイレクトされます。

構文

nohup COMMAND [ARG]... [ & ]
nohup OPTION

COMMAND:実行するコマンド。

ARG:パラメータ。出力ファイルを指定できます。

&:コマンドをバックグラウンドで実行し、ターミナルを終了してもコマンドは実行を続けます。

オプション

  • --help:ヘルプ情報を表示します。
  • --version:バージョン情報を表示します。

よく使うコマンド

以下のコマンドは、root ディレクトリにある runoob.sh スクリプトをバックグラウンドで実行します

nohup /root/runoob.sh &

実行を停止するには、以下のコマンドで nohup で実行しているスクリプトの PID を調べ、kill コマンドで終了させる必要があります

ps -aux | grep "runoob.sh"

以下のコマンドは、root ディレクトリにある runoob.sh スクリプトをバックグラウンドで実行し、出力を runoob.log ファイルにリダイレクトします:

nohup /root/runoob.sh > runoob.log 2>&1 &

2>&1 の説明:

標準エラー 2 を標準出力 &1 にリダイレクトし、標準出力 &1 をさらに runoob.log ファイルにリダイレクトします。

  • 0 – stdin (standard input、標準入力)
  • 1 – stdout (standard output、標準出力)
  • 2 – stderr (standard error、標準エラー出力)