同僚との長期にわたる議論の後にこれを尋ねて、私はここで明確化が本当に欲しいです。
&
コマンドラインに「」を追加するか、「」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>&1
bashなどのために物事を流用しましたか?