【问题标题】:Python script doesn't execute via crontabPython 脚本不通过 crontab 执行
【发布时间】:2020-05-23 03:05:04
【问题描述】:

我阅读了一些类似的主题,但没有解决我的问题。

这是我的第一个 Python 脚本,手动执行时运行没有问题。

但它不适用于下面的 crontab。

0,15,30,45 * * * * /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py >/dev/null 2>&1

下面我也试试。

*/2 * * * * /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py > /tmp/listener.log >/dev/null 2>&1

listener.log 已生成但为空。

有什么想法吗? 谢谢

【问题讨论】:

  • 不要将日志与>/dev/null 2>&1 一起丢弃——相反,请查看 cron 系统日志以查看错误。顺便说一句,您的第二次尝试不会将任何内容记录到 /tmp/listener.log,因为您将标准输出重定向两次。
  • 我试过*/2 * * * * /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py > /tmp/listener.log */2 * * * * /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py >/dev/null 2>&1 */2 * * * * /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py他们都没有被cron执行
  • 大家好,我已经解决了这个问题,这个脚本是用来发送附件的,我必须给附件一个完整的路径,就像脚本路径一样,/usr/lib/python3.5/venv/attachment 脚本和附件在同一个文件夹。

标签: python python-3.x cron


【解决方案1】:

cronjob的形式是:

*  *  *  *  * user-name  command to be executed

您忘记添加运行 cronjob 的用户。 假设您使用 root 用户运行它,请将代码更改为:

*/2 * * * * root /usr/bin/python /usr/lib/python3.5/venv/send_email_attachment.py > /tmp/listener.log >/dev/null 2>&1

【讨论】:

  • 这取决于你在看哪个 crontab;如果是用户特定的 crontab,则没有第六列来指定用户。
  • 我尝试添加用户名,但也没有成功,我有很多PHP脚本,它们都没有包含用户名,它们工作正常。
【解决方案2】:

运行以下命令: sudo /etc/init.d/cron restart

设置 crontab 恶魔后必须重启

参考:Run a python script from with arguments (from argparse in python) from crontab

【讨论】:

  • 我重启了几次,还是没有自动执行...
猜你喜欢
  • 2012-02-02
  • 1970-01-01
  • 2015-10-14
  • 2017-02-05
  • 2020-03-16
  • 2014-05-03
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多