アンドロイド

Linux nohupコマンド

George Hotz | Programming | From the Transistor: Exploring Xilinx on MAC ( O S A K A ) | Part1

George Hotz | Programming | From the Transistor: Exploring Xilinx on MAC ( O S A K A ) | Part1

目次:

Anonim

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

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

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 にリダイレクトするには、 mycommand.out を使用します。

nohup mycommand > mycommand.out 2>&1 &

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

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

代替案

ターミナルを閉じたり切断されたときにコマンドが終了するのを避けるために使用できる代替プログラムがいくつかあります。

画面

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

Tmux

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

否認

disown は、シェルのジョブ制御からシェルジョブを削除するシェル組み込み disown です。 nohup とは異なり、実行中のプロセスでも disown を使用できます。

結論

nohup 使用すると、ログアウトまたは端末の終了時にコマンドが終了しないようにすることができます。

nohup端子