同僚との長期にわたる議論の後にこれを尋ねて、私はここで明確化が本当に欲しいです。
&コマンドラインに「」を追加するか、「」CTRL-Zでバックグラウンドで停止して再開することにより、バックグラウンドプロセスを起動しますbg。その後、ログアウトします。
何が起こるのですか?
これはSIGHUPによって殺されるはずだったと確信していましたが、これは起こりませんでした。再度ログインすると、プロセスは問題なく実行され、pstree「採用」されたことが示されましたinit。
これは予想される動作ですか?
しかし、そうであれば、nohupコマンドの目的は何ですか?とにかく、プロセスは強制終了されないようです。
編集1
いくつかの詳細:
- コマンドは、物理コンソールからではなく、SSHセッションから起動されました。
- コマンドが開始されたことなく、
nohupおよび/または&; その後、で中断CTRL-Zされ、でバックグラウンドで再開されましたbg。 - sshセッションはドロップしませんでした。実際のログアウト( "
exit"コマンド)がありました。 - プロセスは
scpファイルのコピー操作でした。 - 再度ログインすると、
pstreeプロセスが実行され、の子であることを示しましたinit。
編集2
質問をより明確に述べると、プロセスをバックグラウンドで(&またはを使用してbg)配置するとSIGHUP、nohupコマンドのように無視されますか?
編集3
を手動で送信しようとSIGHUPしましたscp:終了したので、シグナルを無視しません。
その後、もう一度起動してバックグラウンドにinit戻し、ログオフしました。「採用」されて実行され続け、再度ログオンするとそこに見つかりました。
今私はかなり困惑しています。SIGHUPログオフ時に送信されなかったようです。
1>/dev/null 2>&1bashなどのために物事を流用しましたか?