cron ジョブが終了する前に分岐/exec() されます。子供の標準出力はどうなりますか?

cron ジョブが終了する前に分岐/exec() されます。子供の標準出力はどうなりますか?

通常、クローンジョブは私に電子メールで送信されstdoutます(以下の設定stderrに従って)。MAILTOcrontab作業が完了したら

私の仕事がfork/ exec(または単に)または他の仕事で始まるとexecどうなりますかsystem("foo &")

  • サブタスクで何が起こるのか、起こるのですかstdoutstderr電子メールで受信できますか?

最も理想的な結果は、両親と子供に別々の電子メールを送信することですが、それは私が自分で準備する必要があるようです。

答え1

子プロセスは親プロセスから stdin、stdout、および stderr を継承します。 Forkとexecはcronジョブで一般的です(シェルスクリプトで実行されるすべてのコマンドにfork / execが含まれることを考慮してください)。出力は通常同じcronメールで送信されます。

別のメールで送信するのはとても簡単です。 stdout/stderr をmail次のようにパイプするだけです。

#!/bin/sh

command-1 2>&1 | mail -s 'output 1' [email protected]
command-2 2>&1 | mail -s 'output 2' [email protected]

cronへの唯一の電子メールが必要な場合(空の動作ではない場合)その他のユーティリティ利便性ifne… | ifne mail -s…)が含まれています。

関連情報