![Cron 任务:将 stdout 发送到 /var/log,将 stderr 发送到电子邮件](https://linux22.com/image/612934/Cron%20%E4%BB%BB%E5%8A%A1%EF%BC%9A%E5%B0%86%20stdout%20%E5%8F%91%E9%80%81%E5%88%B0%20%2Fvar%2Flog%EF%BC%8C%E5%B0%86%20stderr%20%E5%8F%91%E9%80%81%E5%88%B0%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我有一个每小时运行一次的 cron 作业,并提供类似于以下内容的输出(通过 stdout):
Found 1 batch jobs
{'job': 'update'}
Job 1 started at 2013-06-07 13:00:03.673683+00:00
Waiting for 1 batch jobs to complete
Job 1 completed at 2013-06-07 13:57:56+01:00
现在,这些都是有用的信息,但我并不特别希望每小时都收到电子邮件。该应用程序设置为将上述信息打印到 stdout,并将任何警告或错误打印到 stderr。是否可以将上述信息记录到文件(即 /var/log 某处),但将通过 stderr 发送的任何文本通过电子邮件发送给我?
答案1
只需使用“>> /var/log/whatever.log”重定向命令 stdout 输出
如果没有 stderr 输出,则 cron 不会发送邮件,如果有 stderr,您将收到一封电子邮件,因为 stderr 没有重定向到该文件。