nohupでパイピングをすると、なぜティーが途中で止まるのですか?

nohupでパイピングをすると、なぜティーが途中で止まるのですか?

完了するまでに数時間かかるスクリプト(Laravelプロジェクトで)を実行しています。nohupSSHセッションが切断されたときに終了するのを防ぎます。

nohup php artisan do:thing 2>&1 | tee ~/tmp

正常に起動しますが、しばらくするとパイプ破損エラーが発生し、コンテンツ出力が停止して停止しますtee。文書はその時点で停止します。

teeSSHセッションの削除によってプロセスが終了したためです。止めることができますか?

ティープロセスを拒否し、sshがティープロセスを終了するのを防ぎますか?

答え1

nohup最初のコマンドに適用されます。シェルを閉じると、tee通常の出力を書き込めなくなります(標準出力)そして終了します。これによりパイプされた出力を書き込むことができなくなり、最初のコマンドが終了します。

この試み

nohup php artisan do:thing >~/tmp 2>&1

またはお持ちの場合screen

screen sh -c 'php artisan do:thing 2>&1 | tee ~/tmp'

関連情報