1. ホーム
  2. linux

[解決済み】ノーアップとアンパサンドの違いについて

2022-03-31 02:46:39

質問

両方 nohup myprocess.out & または myprocess.out & は、myprocess.out がバックグラウンドで実行されるように設定します。ターミナルをシャットダウンした後も、プロセスは実行されています。 両者の違いは何でしょうか?

解決方法は?

nohup はハングアップシグナルを捕捉します ( man 7 signal を送らないのに対して、アンパサンドはそうではありません (ただし、シェルがそのように設定されているか、あるいは SIGHUP となります。)

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

bashを使用している場合は、コマンド shopt | grep hupon を使用すると シェルが子プロセスにSIGHUPを送信するかどうか。これがオフの場合は、プロセスが停止することはありません。 を終了させることができます。bashがどのように終了させるかについての詳細な情報 アプリケーションを見つけることができます。 こちら .

というケースがあります。 nohup が機能しない場合、例えば、起動したプロセスが その SIGHUP のように、シグナルを こちら .