将crontab输出redirect到电子邮件

它看起来很简单,但我怎样才能redirect这种crontab的输出到我的电子邮件

00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1 

我尝试添加[email protected]但没有任何结果。

问候

您在那里的cron条目将STDOUTSTDERRredirect到一个文件: /var/log/CRONLOGS/testing_prod.log

做你想做的最简单的方法是在cron作业结束时运行mailx ,使用间接发送该文件:

 00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1; mailx -s "Cron output" [email protected] < /var/log/CRONLOGS/testing_prod.log 

但是,请注意,您的cron作业将附加到日志文件中,因此除非定期清除旧的条目(或旋转),否则您将收到以前的所有输出以及新的输出。 最好是创build一个小的shell脚本来写入临时日志,然后将其邮寄到邮件日志中:

 #!/bin/sh /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /tmp/testing_prod$$.log 2>&1 mailx -s "Cron output" [email protected] < /tmp/testing_prod$$.log cat /tmp/testing_prod$$.log >> /var/log/CRONLOGS/testing_prod.log rm /tmp/testing_prod$$.log 

这有利于使crontab看起来更整洁:

 00 06 * * * /home/user/myapp/cronscript.sh