Next: , Previous: nice invocation, Up: Modified command invocation   [Contents][Index]


23.4 nohup: ハングアップ・シグナルで終了しないコマンドを実行する

nohup を使って、command を実行すると、 指定されたコマンドがハングアップ・シグナルを無視するようになる。 従って、そのコマンドは、ユーザがログアウトした後でも、バックグラウンドで実行を継続することができる。


書式:

nohup command [arg]…

標準入力が端末の場合は、標準入力がリダイレクトされる。 その結果、端末セッションとしては、nohup から実行されているコマンドが、端末を使用していると勘違いしないですむ。 さらに、標準入力の代わりになるファイルのファイル・ディスクリプタを読み込み不可にする。 nohup から実行されているコマンドが、誤って標準入力から読み込を行おうとした場合に、 エラーメッセージを出すことができるようにするためである。 このリダイレクションは GNU の拡張である。 GNU 以外のホストでも使うことを考えているプログラムでは、GNU の拡張を当てにせず、 ‘nohup command [arg]… 0>/dev/null’ を使えばよい。

標準出力が端末の場合、コマンドの標準出力は、nohup.out というファイルに追加されて行く。そのファイルに書き込めない場合は、$HOME/nohup.out に追記されることになる。そのファイルにも書き込めない場合は、コマンドの実行が行われない。 nohup によって作成されるのが nohup.out であれ、 $HOME/nohup.out であれ、それは、ファイルの所有者にのみ読み書き可能なものになる。 現在の umask の設定の影響は受けない。

標準エラーが端末の場合、コマンドの標準エラー出力は、基本的には標準出力 (リダイレクトされているかもしれない) と同じファイル・ディスクリプタにリダイレクトされる。 ただし、標準出力がクローズされている場合には、標準エラーの端末への出力は、 リダイレクトされることなく、直接 nohup.out$HOME/nohup.out というファイルに追加される。どちらのファイルが使用されるかは、上述のとおりである。

コマンドの出力を nohup.out 以外のファイルに書き込みたければ、 リダイレクトすればよい。たとえば、make の出力を make.log に書き込みたかったら、次のようにする。

nohup make > make.log

nohup は、実行するコマンドを自動的にバックグラウンドに送ることをしない。 そこで、ユーザは、コマンドラインの末尾に ‘&’ を付けることで、 明示的にそれを行わなければならない。また、nohup は、command の niceness を変更しない。niceness を変更したかったら、nice を使って、‘nohup nice command’ のように実行すればよい。

command は、シェルの組み込みコマンドであってはならない (see Special built-in utilities)。

指定できるオプションは、--help--version だけである。 See Common options. オプションはオペランドの前に置かなければならない。

終了ステータス:

125: POSIXLY_CORRECT が設定されていない場合に、nohup そのものの
      実行に失敗した。
126: command は見つかったが、起動できなかった。
127: command が見つからなかった。 
それ以外の場合は、command の終了ステータス。

POSIXLY_CORRECT が設定されている場合は、nohup そのものが実行に失敗したときの終了ステータスは、125 ではなく 127 になる。