捕获Python的cronjobs错误

我有一个Python脚本作为一个cron工作,这样的调用

/path/to/python /path/to/myscript myparam 

当脚本发生错误时,cronjob会自动失败。 当我从命令行运行相同的命令,我得到一个堆栈跟踪。 如何在运行cron作业时将脚本输出到堆栈跟踪(或写入文件)? 我已经设置了MAILTOvariables。 我也尝试过

 /path/to/python /path/to/myscript myparam 2>&1 >> /path/to/logfile 

在crontab中,但日志文件保持空白。

更新:现在没有输出redirect的调用工作。 这不是python脚本的问题,而是MAILTO crontab设置中的错误分隔符。 记住:使用逗号,不要在逗号后面留空格!

你使用了错误的顺序。

  • 2>&1表示将标准错误redirect到标准输出并同时传送到terminal
  • >> /path/to/logfile将标准输出redirect到日志文件。 你没有提到标准错误,所以还是去了terminal。

尝试这个:

 /path/to/python /path/to/myscript myparam >> /path/to/logfile 2>&1 

确保运行此脚本的用户具有对日志文件的写入权限。

看看这里通过http://www.velocityreviews.com/forums/t646893-running-a-python-script-from-crontab.html工作类似的sitaution。 添加exception处理,日志logging,邮件和stderr应该可以得到你想要的回溯数据。