Crontab无法执行Python脚本

时间:2012-11-06 11:47:31

标签: python crontab

crontab无法执行Python脚本。我用来运行Python脚本的命令行没问题。

这些是我尝试的解决方案:

  • #!/usr/bin/env python
  • 的顶部添加main.py
  • PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
  • 的顶部添加crontab
  • chmod 777main.py档案
  • service cron restart

我的crontab是:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

*/1 * * * * python /home/python_prj/main.py

,/ var / log / syslog中的日志为:

Nov  6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py)

,别无其他。

main.py脚本从python_prj下的其他模块调用一些方法,这有关系吗?

任何人都可以帮助我?

3 个答案:

答案 0 :(得分:9)

  

main.py脚本从python_prj下的其他模块调用一些方法,这有关系吗?

是的,确实如此。所有模块都需要在运行时找到。您可以通过多种方式完成此操作,但最合适的可能是在crontab中设置PYTHONPATH变量。

您可能还想在crontab中设置MAILTO变量,以便收到包含任何追溯的电子邮件。

[update]这是我的crontab的顶部:

www:~# crontab -l

DJANGO_SETTINGS_MODULE=djangocron.settings
PATH=...
PYTHONPATH=/home/django
MAILTO="cron-notices@example.com"
...
# m h  dom mon dow   command
10-50/10 * * * *               /home/django/cleanup_actions.py
...

(每10分钟运行一次清理操作,小时除外)。

答案 1 :(得分:4)

脚本中的任何文件访问权限?如果是这样,您是否在脚本中使用了相对路径(甚至:没有显式路径)? 从命令行运行时,实际文件夹是您的路径',您可以从中启动脚本。当由cron运营时,你的路径是'根据环境变量可能会有所不同 因此,请尝试使用您访问的任何文件的绝对路径。

答案 2 :(得分:0)

检查脚本的权限。确保它可以通过cron执行 - 尝试chmod + x main.py.