捕获 python cronjobs 中的错误

捕获 python cronjobs 中的错误

我有一个 python 脚本作为 cron 作业,其调用方式如下

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

当脚本中出现错误时,cronjob 会默默失败。当我从命令行运行相同的命令时,我会得到一个堆栈跟踪。当作为 cron job 运行时,如何让我的脚本输出堆栈跟踪(或将其写入文件)?我已经设置了变量MAILTO。我也尝试过

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

在 crontab 中但日志文件仍然是空的。

更新:无需输出重定向的调用现在可以正常工作。这不是 Python 脚本的问题,而是 MAILTO crontab 设置中的错误分隔符。请记住:使用逗号,不要在逗号后加空格!

答案1

您使用了错误的顺序。

  • 2>&1意味着将标准错误重定向到标准输出,并将两者都重定向到终端
  • >> /path/to/logfile将标准输出重定向到日志文件。您没有提到标准错误,因此它仍然转到终端。

尝试这个:

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

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

相关内容