cron作业执行脚本和电子邮件错误

时间:2012-03-12 16:03:48

标签: python cron

我在/usr/share/myscript.py

中有一个python脚本

我想从cron作业执行此脚本,如果脚本产生任何错误,请将这些错误通过电子邮件发送给特定用户(并且不通知root帐户)。

我不想覆盖任何cron设置 - 其他cron作业仍应通知root。

目前我正在使用shell包装器,它应该将错误传递给日志文件,然后通过电子邮件发送给我。然后,cron作业直接执行此.sh文件而不是python脚本。

#!/bin/sh
python /usr/share/scripts/myscript.py 2>&1 > /home/me/logs/myscript.log
test -s /home/me/logs/myscript.log && cat /home/me/logs/myscript.log | mail -s "myscript errors" bob@myplace.com

在生产中,如果没有出错,则脚本正确执行,并且没有人通过电子邮件发送。但是,如果执行python脚本时出错,那么仍然会从cron通过电子邮件将其发送给root用户。

如何更改.sh脚本以取消此操作并向我报告?

1 个答案:

答案 0 :(得分:2)

此命令不按您想要的顺序重定向错误输出:

python /usr/share/scripts/myscript.py 2>&1 > /home/me/logs/myscript.log

相反,您需要首先重定向stdin,然后重新定位stderr,如下所示:

python /usr/share/scripts/myscript.py > /home/me/logs/myscript.log 2>&1

另外,您是否已将>/dev/null 2>&1附加到crontab中包装的脚本调用的末尾?