nohup コマンド

目的

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

構文

nohup { -p pid | CommandArg ... ] [ & ] }

説明

nohup コマンドは、Command パラメーターおよび関連する Arg パラメーターで 指定されたコマンドを、すべてのハングアップ (SIGHUP) シグナルを無視して実行するか、 またはすべてのハングアップ (SIGHUP) シグナルを無視する -p オプションを 使用して指定されたプロセスを変更します。

nohup コマンドは、ログオフ後にバックグラウンドでプログラムを実行するために 使用することもできます。nohup コマンドをバックグラウンドで 実行するには、& (アンパーサンド) をコマンドの終わりに追加します。
注: -p pidCommand を一緒に指定することはできません。
-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.out」は、 find / -print コマンドからの出力が nohup.out ファイルに入っていることを示します。これらのメッセージが表示されたあとは、まだ find コマンドを実行中でもログアウトすることができます。
  2. コマンドをバックグラウンドで実行し、標準出力を異なるファイルにリダイレクトするには、 次のように入力します。
    $ nohup find / -print >filenames &
    この例では、find / -print コマンドが実行され、その出力がファイル filenames に格納されます。プロセス ID とプロンプトのみが次のように表示されます。
    677
    $
    nohup コマンドが Command パラメーターで指定されたコマンドを始動するのには時間がかかるので、 ログアウトする前に少し待ってください。 早くログアウトしすぎると、Command パラメーターで指定したコマンドが実行されないことがあります。 Command パラメーターで指定したコマンドが始動されたら、ログアウトしても影響はありません。
  3. 複数のコマンドを実行するにはシェル・プロシージャーを使います。例えば、次のようにシェル・プロシージャーを書いて
    neqn math1 | nroff > fmath1
    nnfmath1 ファイルと命名します。この場合、次のコマンドを使うと、nnfmath1 ファイル内のすべてのコマンドに nohup コマンドを実行できます。
    nohup sh nnfmath1
  4. 実行許可を nnfmath1 ファイルに割り当てる場合、 次のコマンドを発行すると、同じ結果を得ることができます。
    
    nohup nnfmath1
  5. nnfmath1 ファイルをバックグラウンドで実行するには、 次のように入力します。

    nohup nnfmath1  
    &
  6. nnfmath1 ファイルを Korn シェルで実行するには、 次のように入力します。
    
    nohup ksh nnfmath1
  7. 実行中のプロセスにすべてのハングアップ・シグナルを無視させるには、 次のように入力します。
    nohup -p 161792