nohup コマンド

目的

コマンドをハングアップせずに実行します。

構文

nohup { -p pid | コマンド [ Arg ...] [ & ]}

説明

nohup コマンドは、Command パラメーターおよび関連する Arg パラメーターで指定されたコマンドをハングアップ・シグナル (SIGHUP) をすべて無視して実行するか、-p オプションで指定されたプロセスを変更して SIGHUP シグナルをすべて無視するようにします。 SIGHUP は、プロセスの制御端末がクローズされたときにプロセスに送信されるシグナルです。

nohup コマンドは、ログオフ後にバックグラウンドでプログラムを実行するために 使用することもできます。 nohup コマンドをバックグラウンドで実行するには、コマンドの末尾に & (アンパーサンド) を追加します。

標準エラーが端末に表示され、標準出力が端末にも表示されず、ユーザーが指定した出力ファイル (デフォルト出力ファイルは nohup.out) にも送信されない場合、 ./nohup.out ファイルと $HOME/nohup.out ファイルの両方が作成されず、エラー・メッセージを追加するために開かれることもありません。 nohup コマンドは、nohup コマンドで指定されたパラメーター・ユーティリティーを実行せず、終了状況 127 で終了します。
注: -p pid オプションと Command オプションを一緒に指定することはできません。
-p pid フラグを使用すると、指定されたプロセスの出力は nohup.out ファイルにリダイレクトされません。

フラグ

項目 説明
-p PID pid は、実行中のプロセスのプロセス ID です。 nohup コマンドは、すべてのハングアップ (SIGHUP) シグナルを無視するように、指定されたプロセスを変更します。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
126 Command パラメーターで指定されたコマンドを検出しましたが、呼び出すことができませんでした。
127 nohup コマンドでエラーが発生したか、 Command パラメーターで指定されたコマンドが見つかりませんでした。

それ以外の場合、 nohup コマンドの終了状況は、 Command パラメーターで指定されたコマンドの終了状況です。

  1. ログアウト後にコマンドをバックグラウンドで実行するには、次のように入力します。
    $ nohup find / -print &
    このコマンドを入力すると、次のように表示されます。
    670
    $ Sending output to nohup.out
    プロセス ID 番号は、& (アンパーサンド) によって始動されるバックグラウンド・プロセスのプロセス ID 番号に変わります。 メッセージSending output to nohup.outfind/-print コマンドからの出力が nohup.out ファイルにあることを通知します。 find コマンドがまだ実行中であっても、これらのメッセージが表示された後でログオフすることができます。
  2. コマンドをバックグラウンドで実行し、標準出力を異なるファイルにリダイレクトするには、 次のように入力します。
    $ nohup find / -print >filenames &
    この例では、 find/-print コマンドを実行し、その出力を次の名前のファイルに保管します。filenamesプロセス ID とプロンプトのみが表示されます。
    677
    $
    nohup コマンドは Command パラメーターで指定されたコマンドを開始するのに少し時間がかかるため、ログオフするまで待機してください。 早くログアウトしすぎると、Command パラメーターで指定したコマンドが実行されないことがあります。 Command パラメーターで指定したコマンドが始動されたら、ログアウトしても影響はありません。
  3. 複数のコマンドを実行するにはシェル・プロシージャーを使います。 例えば、次のようにシェル・プロシージャーを書いて
    neqn math1 | nroff > fmath1
    名前を付けます。 nnfmath1ファイル内のすべてのコマンドに対して nohup コマンドを実行できます。nnfmath1次のコマンドでファイルを作成します。
    nohup sh nnfmath1
  4. 以下のものに実行権限を割り当てるとします。nnfmath1ファイルの場合は、次のコマンドを発行して同じ結果になります。
    nohup nnfmath1
  5. 以下を実行します。nnfmath1次のように入力します。
    nohup nnfmath1  
    &
  6. 以下を実行します。nnfmath1Korn シェルでは、次のように入力します。
    nohup ksh nnfmath1
  7. 実行中のプロセスにすべてのハングアップ・シグナルを無視させるには、 次のように入力します。
    nohup -p 161792