GNU/Linux >> Linux の 問題 >  >> Linux

LinuxNohupコマンド

nohup コマンドは、引数として指定された別のプログラムを実行し、すべてのSIGHUPを無視します (ハングアップ)信号。 SIGHUP 制御端末が閉じているときにプロセスに送信される信号です。

通常、SSH経由でプログラムを実行する場合、接続が切断されるかログアウトすると、セッションが終了し、端末から実行されたすべてのプロセスが停止します。ここがnohup コマンドが便利です。すべてのハングアップシグナルを無視し、プロセスは引き続き実行されます。

nohupコマンドの使用方法#

nohupの構文 コマンドは次のとおりです:

nohup COMMAND [ARGS]

このコマンドは、標準の--help以外のオプションを受け入れません。 および--version

次の例を見てみましょう:

nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'

nohup mycommandを実行します フォアグラウンドでコマンドを実行し、コマンド出力をnohup.outにリダイレクトします ファイル。このファイルは、現在の作業ディレクトリに作成されます。コマンドを実行しているユーザーが作業ディレクトリへの書き込み権限を持っていない場合、ファイルはユーザーのホームディレクトリに作成されます。

ログアウトするか、ターミナルを閉じても、プロセスは終了しません。

​​バックグラウンドでコマンドを実行する#

nohupを使用する コマンドが完了するまでシェルを操作できないため、フォアグラウンドではあまり役に立ちません。

コマンドをバックグラウンドで実行するには、&を追加します コマンドの最後にある記号:

nohup mycommand &

出力には、シェルジョブID(角かっこで囲まれています)とプロセスIDが含まれます:

[1] 25177

fgを使用すると、ジョブIDを使用してコマンドをフォアグラウンドに移動できます。 コマンド。

何らかの理由でプロセスを終了したい場合は、killを使用してください コマンドの後にプロセスIDが続く:

kill -9 25132

出力をファイルにリダイレクトする#

デフォルトでは、nohup コマンド出力をnohup.outにリダイレクトします ファイル。出力を別のファイルにリダイレクトする場合は、標準のシェルリダイレクトを使用します。

たとえば、標準出力と標準エラーをmycommand.outにリダイレクトします。 使用するもの:

nohup mycommand > mycommand.out 2>&1 &

標準出力と標準エラーを別のファイルにリダイレクトするには:

nohup mycommand > mycommand.out 2> mycommand.err &

代替案#

端末を閉じたり切断したりしたときにコマンドが終了しないようにするために使用できる代替プログラムがいくつかあります。

画面番号

Screenor GNU Screenは、スクリーンセッションを開始し、そのセッション内で任意の数のウィンドウ(仮想端末)を開くことができるターミナルマルチプレクサプログラムです。 Screenで実行されているプロセスは、切断されてもウィンドウが表示されていない場合でも実行を継続します。

Tmux#

TmuxisはGNUscreenの最新の代替手段です。 Tmuxを使用すると、セッションを作成して、そのセッション内で複数のウィンドウを開くこともできます。 Tmuxセッションは永続的です。つまり、Tmuxで実行されているプログラムは、ターミナルを閉じても実行され続けます。

否認#

disown シェルのジョブコントロールからシェルジョブを削除するシェルビルトインです。 nohupとは異なり 、disownを使用できます プロセスの実行についても。

結論#

nohup ログアウトまたはターミナルを終了するときにコマンドが終了するのを防ぐことができます。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. Linuxmvコマンド

  2. Linuxduコマンド

  3. Linuxipコマンド

  1. Linuxnohupコマンドの使用方法

  2. Linuxcdコマンド

  3. Linux の nohup コマンド オプション

  1. Linuxifconfigコマンド

  2. Linuxタイムコマンド

  3. LinuxでのPingコマンド