通过 Cron 作业执行的 Python 脚本没有输出

No Output for Python Script Executed via Cron Job

Centos6 中的 运行ning cron 作业相对较新,我似乎无法正确执行此 Python 脚本。我希望执行此脚本,然后将输出通过电子邮件发送给我。我一直在收到电子邮件,但它们是空的。

到目前为止,我已经尝试在 Crontab 中输入:

*/10 * * * * cd /home/local/MYCOMPANY/purrone/MyPythonScripts_Dev1 && /usr/bin/python ParserScript_CampusInsiders.py  > /var/log/cron`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "Feedparser Output" my@email.com

*/10 * * * * /home/local/MYCOMPANY/purrone/MyPythonScripts_Dev1/ParserScript_CampusInsiders.py > /var/log/cron`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "Feedparser Output" my@email.com

我在 python 脚本上有 运行 chmod +x 以使脚本可执行,Python 脚本在 [=30= 处有 #!/usr/bin/env python ].我在这里做错了什么?

另一个问题可能是我不应该使用日志文件?当我用 cat cron 打开时,我在 /var/log/cron 看到的都是这样的,例如(脚本没有实际输出):

Jul 23 13:20:01 ent-mocdvsmg01 CROND[24681]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jul 23 13:20:01 ent-mocdvsmg01 CROND[24684]: (MYJOB\purrone) CMD (/home/local/MYCOMPANY/purrone/MyPythonScripts_Dev1/ParserScript_CampusInsiders.py > /var/log/cron`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 ; mailx -s "Feedparser Output" my@email.com)

您的 mailx 输入中没有任何内容;它期望 stdin 上的消息。尝试 运行 在 crontab 之外对其进行测试,直到它发送有效的电子邮件。你可以测试:

% echo hello |mailx -s test my@email.com

请注意,cron 可以通过电子邮件将其 运行 的输出发送给您。您只需要在 crontab 的顶部添加一行,例如:

MAILTO = you@email.com

解决方案是省略重定向 > 而是编辑 Crontab:

*/15 * * * * /home/local/COMPANY/malvin/SilverChalice_CampusInsiders/SilverChalice_Parser.py | tee /home/local/COMPANY/malvin/SilverChalice_CampusInsiders`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log | mailx -s "SilverChalice CampusInsiders" my@email.com