cron 作业在终止前会 fork/exec()。孩子的标准输出会发生什么?

cron 作业在终止前会 fork/exec()。孩子的标准输出会发生什么?

通常, cron 作业stdoutstderr通过电子邮件发送给我(根据MAILTO中的设置crontab当工作完成时

如果我的工作以fork/ exec(或简单地exec)或 with开始另一项工作怎么办system("foo &")

  • 子作业的stdout/会发生什么?stderr我会通过电子邮件收到吗?

理想的结果是为父母和孩子发送一封单独​​的电子邮件,但我很确定我必须自己安排。

答案1

子进程从其父进程继承其 stdin、stdout 和 stderr。 Fork 和 exec 在 cron 作业中很常见(考虑一下在 shell 脚本中运行的每个命令都涉及 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…)。

相关内容