nohupコマンドが機能しないのはなぜですか?

nohupコマンドが機能しないのはなぜですか?

表示された例を教えてください。nohup後でプログラム作業もlogoutnohupNETでもコマンドなしでバックグラウンドでスクリプトを実行するために試しましたlogout

例:

ping google.com > ping_result &

その後、ログアウトして再度ログインすると、ファイルの内容が増えることがわかります。これは、pingが実行中であることを意味します。しかし、そうではありません。

答え1

端末でこのコマンドを実行してください。

/bin/sleep 1000 &

別の端末でプロセスが実行されていることを確認してください。

pgrep -fa sleep (コースは図に示されています)

最初の端末を閉じるかログアウトします。もう一度確認してください:

pgrep -fa sleep
(見せないでください)


nohup最初のコマンドに追加された手順を繰り返します。

nohup /bin/sleep 1000 &

2番目のチェックでは、プロセスがまだ実行中であることがわかります。

答え2

まあ、ここに例があります。入力する:

nohup find -size +100k > log.txt

そしてログアウトしてください。その後、もう一度ログインしてlog.txtファイルを確認してください。

追加情報:LinuxおよびUnix nohupコマンド

答え3

nohup は、端末が存在しないときに端末に書き込もうとするプロセスを「終了」(信号停止防止、SIGHUP、man 7 信号を参照)しません.

プロセスが端末に書き込まれない場合、nohupは必要ありません。プロセスは終了または完了するまで保持されます。ただし、多くのプロセスは実行中に端末に書き込みを試み、端末が存在しない場合(ログアウトなど)、「停止」信号を送信して終了します。 nohupはこのようなことを防ぎますが、すべての出力をファイルにリダイレクトしてバックグラウンドに配置することで(Command&> File&)これを手動で防ぐことができます。
nohupはこのプロセスを自動化します。

nohupは同じ理由でターミナル入力が失われるとシャットダウンを防ぐことができますが、この使い方はあまり一般的ではありません(nohupはターミナル/標準入力ではなく/ dev / nullを入力にリダイレクトします)

答え4

リモートログインの解決策を思い出しました。

nohup を使用してプロセスを開始した端末が終了しても、そのプロセスは引き続き実行されます。ただし、exitor Ctrl+ logout だけを使用してはDいけませんが、グラフィックログインでログアウトした場合はログアウトも可能です。

関連情報