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

Nohup とアンパサンドの違いは何ですか

nohup ハングアップ信号をキャッチします (man 7 signal を参照) ) アンパサンドはしません (シェルがそのように構成されているか、SIGHUP を送信しない場合を除く)。

通常、& を使用してコマンドを実行する場合 その後シェルを終了すると、シェルはハングアップ信号 (kill -SIGHUP <pid>) でサブコマンドを終了します。 )。これは nohup を使用して防ぐことができます 、シグナルをキャッチして無視するため、実際のアプリケーションには到達しません。

bash を使用している場合は、コマンド shopt | grep hupon を使用できます シェルが子プロセスに SIGHUP を送信するかどうかを確認します。オフの場合、プロセスは終了しません。これは、あなたの場合のようです。 bash がアプリケーションを終了する方法の詳細については、こちらを参照してください。

nohup の場合があります。 たとえば、開始したプロセスが SIGHUP に再接続する場合など、機能しません


myprocess.out & サブシェルを使用してバックグラウンドでプロセスを実行します。現在のシェルが (ログアウトなどによって) 終了すると、すべてのサブシェルも終了するため、バックグラウンド プロセスも終了します。 nohup コマンドは HUP を無視します そのため、現在のシェルが終了した場合でも、サブシェルと myprocess.out バックグラウンドで実行され続けます。もう 1 つの違いは、& です。 単独では stdout/stderr をリダイレクトしないため、出力またはエラーがある場合、それらは端末に表示されます。一方、nohup は stdout/stderr を nohup.out にリダイレクトします または $HOME/nohup.out .


ほとんどの場合、ssh を使用してリモート サーバーにログインします。シェル スクリプトを開始してログアウトすると、プロセスが強制終了されます。Nohup は、シェルからログアウトした後もスクリプトをバックグラウンドで実行し続けるのに役立ちます。

Nohup command name &
eg: nohup sh script.sh &

Nohup は HUP シグナルをキャッチします。Nohup はジョブを自動的にバックグラウンドに置きません。 &

を使用して明示的に伝える必要があります
Linux
  1. シェル変数と環境変数の使用法の違いは?

  2. Gitスイッチとチェックアウトの違いは何ですか?

  3. Cのstrtok_rとstrtok_sの違いは何ですか?

  1. fsck と e2fsck の違いは何ですか?

  2. adduser と useradd の違いは何ですか?

  3. $(CC) と $CC の違いは何ですか?

  1. [[$ a ==Z*]]と[$a==Z *]の違いは?

  2. RedhatとcentOSの違いは何ですか?

  3. unlink と rm の違いは何ですか?