四半期に「&」を使用した場合、いつ「nohup」が必要ですか?

四半期に「&」を使用した場合、いつ「nohup」が必要ですか?

まず、この質問は関連していますが、次のような非常に良い質問とはかなり異なります。

nohup、disown、&の違い

一つ理解したいことがあります。 「&」をする時にフォークをするということです。そうですか?

"nohup ... &"タスクは動作しますか、それともシンプルで十分ですか?

「&」を使用していますが、まだ「nohup」を使用したい状況を誰かが表示できますか?

ベストアンサー1

まず、シェルは実行するかどうかにかかわらず、コマンドを実行するたびに新しいプロセスを分岐します&&バックグラウンドで実行中という意味です。

これはあまり正確ではありませんのでご注意ください。シェル機能などの一部のコマンドはcd通常、新しいプロセスを生成しません。これは通常、外部コマンドかシェル機能かを示しますtype cmd。シェル関数自体であることをお知らせします。cmdtype typetype

nohup何か違うと思います。新しいプロセスに無視するように指示しますSIGHUP。親シェルが閉じたときにカーネルが送信する信号です。

ご質問にお答えするには:

  1. 走るemacs & (デフォルトでは別々のXウィンドウで実行する必要があります)
  2. 親シェルでを実行しますexit

emacsウィンドウがバックグラウンドで実行されているが終了したことがわかります。これはデフォルトの動作なので、nohupこれを修正するために使用してください。

バックグラウンドでタスクを実行すること(&または使用bg、他のシェルには異なる構文があるでしょう)は、現代のシステムのマルチタスク機能に由来するシェルの機能です。最新のシェル(bash、、、、...)はプログラムリスト(またはzshksh働く)。一度に一人しかいません。展望、これはシェルフォーカスを取得することを意味します。私は誰かがフォアグラウンドで実行されているプロセスとバックグラウンドで実行されているプロセス(主にstdin/アクセスstdout)の違いについてより多くの情報を提供できることを願っています。

いずれにせよ、これはサブプロセスのペアがどのように反応するかには影響しませんSIGHUPnohupする。

おすすめ記事