SSHセッションがタイムアウトしたときにnohup ./a.outが死ぬのはなぜですか?

SSHセッションがタイムアウトしたときにnohup ./a.outが死ぬのはなぜですか?

./a.outSSH経由で端末で実行すると、SSHセッションはタイムアウトして./a.out終了します。なぜこれですか?何人かの人々はSIGHUPによると言われています。しかし、実行してもnohup ./a.outまだ同じ問題があります。 SSH セッションがタイムアウトすると、プロセスはnohup ./a.outまだ終了します。

私は、人々が両親が死ぬと子供たちも死ぬからと言うのを見たことがあります。しかし、私はこれが一般的に本当ではないと他の場所で主張するのを見ました。

別の説明は、./a.outの標準出力が端末にバインドされていることです。したがって、端末が終了した後に./a.outが端末に書き込もうとすると、SIGPIPEが受信されて終了します。

nohup ./a.outSSHがタイムアウトする実際の理由は何ですか?

これは私が実行している実際のコマンドです。nohup ./a.out |& tee logs.out

答え1

あなたの場合、tee logs.out端末への書き込み操作が終了し、SSH接続が終了した後に書き込みを試みると終了します。これはまた、nohup次にa.out標準出力に書き込むときに終了するようにします。

生き残るには、nohup ./a.outパイプなしでバックグラウンドで実行し、ファイルを個別に監視する必要がありますnohup.out

nohup ./a.out &
tail -f nohup.out

またはログファイルを使用して

nohup ./a.out > logs.out &
tail -f logs.out

関連情報