nohup
コマンドは、引数として指定された別のプログラムを実行し、すべてのSIGHUP
(hangup)信号を無視します。 SIGHUP
は、制御端末が閉じられたときにプロセスに送信されるシグナルです。
通常、SSH経由でプログラムを実行すると、接続が切断されたりログアウトしたりすると、セッションが終了し、端末から実行されるすべてのプロセ これは、nohup
コマンドが便利な場所です。, これはすべてのhangupシグナルを無視し、プロセスは引き続き実行されます。
nohupコマンドの使い方#
nohup
コマンドの構文は次のとおりです。
nohup COMMAND
コマンドは、標準の--help
および--version
。,
次の例を見てみましょう。
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
mycommand
コマンドをフォアグラウンドで実行し、コマンド出力をnohup.out
ファイル。 このファイルは現在の作業ディレクトリに作成されます。 ユーザの場合の実行コマンドがなの書き込み権限の作業ディレクトリ、ファイルが作成されたユーザのホームディレクトリです。
端末をログアウトしたり閉じたりしても、プロセスは終了しません。,
コマンドをバックグラウンドで実行する#
フォアグラウンドでnohup
を使用すると、コマンドが完了するまでシェルと対話できないため、あまり役に立ちません。
バックグラウンドでコマンドを実行するには、コマンドの最後に&
記号を追加します。
nohup mycommand &
出力には、シェルジョブID(角かっこで囲まれた)とプロセスIDが含まれます。
25177
ジョブIDを使用して、コマンドをフォアグラウンドに持ち込むことができます。fg
コマンド。,
何らかの理由でプロセスを終了したい場合は、kill
コマンドの後にプロセスIDを使用します。
kill -9 25132
出力をファイルにリダイレクトする#
デフォルトでは、nohup
コマンド出力をnohup.out
ファイル。 出力を別のファイルにリダイレクトする場合は、標準のシェルリダイレクトを使用します。,
たとえば、標準出力と標準エラーをmycommand.out
にリダイレクトするには、次のように使用します。
nohup mycommand > mycommand.out 2>&1 &
標準出力と標準エラーを別のファイルにリダイレクトするには、
nohup mycommand > mycommand.out 2> mycommand.err &
Alternatives#
コマンドを回避するために使用できる代替プログラムがいくつかあります。端末を閉じたとき、または切断されたときに終了します。,
Screen#
ScreenまたはGNU Screenは、screenセッションを開始し、そのセッション内の任意の数のウィンドウ(仮想端末)を開くことを可能にする端末マルチプレクサプログラムです。 Screenで実行されているプロセスは、切断されてもウィンドウが表示されていない場合でも実行され続けます。
Tmux#
TmuxはGNUスクリーンに代わる現代的なものです。 とTmuxきものセッションおよびオープンマルチウィンドウのウィンドウ内にはセッション。 Tmuxセッションは永続的であるため、Tmuxで実行されているプログラムは、端末を閉じても実行され続けます。,
Disown#
disown
シェルのジョブコントロールからシェルジョブを削除するシェル組み込みです。 とは異なりnohup
、あなたが使用することができますdisown
実行中のプロセスでも。
結論#
nohup
ターミナルをログアウトまたは終了するときにコマンドが終了するのを防ぐことができます。