仅针对 cron.daily、cron.hourly 等作业的 cron 错误发送电子邮件

jrd*_*oko 8 linux email cron crontab cronjob

我有几个cron作业是运行(在/etc/cron.daily/etc/cron.hourly/etc/cron.weekly等)和电子邮件root@localhost的结果。如果作业成功,我想停止这些电子邮件,并且只在出错时发送电子邮件(我知道可以通过重定向stdout到来完成/dev/null)。我了解如何为单个 cron 作业执行此操作,但是这些特殊目录中的脚本使用run-parts. 抑制这些脚本的成功电子邮件的最佳方法是什么?

pav*_*ium 5

您应该发送成功的电子邮件通知,/dev/null以便它们消失。

但您希望看到不成功的电子邮件通知。

这意味着您需要先定向stdout/dev/null然后定向/dev/stderrstdout

尝试将 cronjobs 的重定向部分更改为

>/dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

这个链接

  • 你确定 `>/dev/null 2>&1` 位吗?我对其进行了测试,它将所有内容都汇集到了 `/dev/null`,如果您删除了 `2>&1`,则只会删除 stdout。 (2认同)

小智 5

您可能希望使用程序的包装器之一,当出现问题时输出所有内容,否则吞下标准输出。

一个例子可能是cronic,只需在 'run-parts' 前面加上 'cronic',例如:

# m h dom mon dow user  command
 17 *  *   *   *  root  cd / && /etc/cronic run-parts --report /etc/cron.hourly
Run Code Online (Sandbox Code Playgroud)

/etc/cronic从提到的网站下载的可执行 cronic 脚本的地方在哪里。