使用邮件接收 Cron 的任务运行情况

使用邮件接收 Cron 的任务运行情况

Chris Yue No Comment
Posts

Cron 默认就是通过邮件来发送的任务运行信息。

运行下面命令:

$ sudo grep CRON /var/log/syslog

在没有安装本地邮件系统的情况下,你可能会看到“No MTA installed”的提示,意思就是 CRON 需要使用邮件系统发送定时任务运行时生成的信息。

不用多想,邮件系统是一定要装的,至于怎么装,可以查看我之前写的一篇文章

Cron 最好的功能就是能实时发送任务运行产生的内容,然而 Cron 最差的功能也是能实时发送任务运行产生的内容,Cron 觉得每一条任务生成的内容都很重要,导致邮箱很快就被 Cron 发过来的信件给淹没。

对于这个问题,还好还有解决的办法。在 *nix 系统里,信息可以输出到 stdout 和 stderr,而无论是 stdout 还是stderr,Cron 都会作为邮件内容发送。

如果嫌邮件太多,可以将任务生成的内容转发到 /dev/null

*/5 * * * * php /path/to/app/console app:order:import > /dev/null

如果此任务没有出现错误,那就不会有邮件发送;而转发只能转发 stdout 通道的信息,stderr 不会被影响,所以如果任务运行出错,那么依然也能收到消息。

另外,在配置文件 crontab -e 里,是可以指定全局变量的,可以在文件头指定邮件收件人的哦

MAILTO=chris@example.com

* * * * * /path/to/your/command

使用邮件接收 Cron 的任务运行情况 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

写作累,服务器还越来越贵
求分担,祝愿好人一生平安
天使打赏人

发表评论

1 + 7 =