Crontab fails to execute Python script
这些是我尝试过的解决方案:
-
在
main.py 的顶部添加#!/usr/bin/env python -
在
crontab 的顶部添加PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin -
chmod 777 到main.py 文件 -
service cron restart
我的crontab是:
1 2 3 | PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin */1 * * * * python /home/python_prj/main.py |
,/ var / log / syslog中的日志为:
1 | Nov 6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py) |
没什么。
有人可以帮助我吗?
The main.py script calls some methods from other modules under python_prj, does that matter?
是的,确实如此。所有模块都需要在运行时找到。您可以通过多种方式完成此操作,但最合适的方法是在crontab中设置PYTHONPATH变量。
您可能还想在crontab中设置MAILTO变量,以便获得带有任何回溯的电子邮件。
[更新]这是我的crontab的顶部:
1 2 3 4 5 6 7 8 9 10 | www:~# crontab -l DJANGO_SETTINGS_MODULE=djangocron.settings PATH=... PYTHONPATH=/home/django MAILTO="[email protected]" ... # m h dom mon dow command 10-50/10 * * * * /home/django/cleanup_actions.py ... |
(每隔10分钟运行一次清理操作,但每小时除外)。
您的脚本中是否有文件访问权限?如果是这样,您是否在脚本中使用了相对路径(甚至:没有显式路径)?
从命令行运行时,实际文件夹是"您的路径"??,您可以从此处开始脚本。当由cron运行时,"您的路径"??可能会有所不同,具体取决于环境变量。
因此,请尝试使用访问任何文件的绝对路径。
检查脚本的权限。确保它可由cron执行-尝试使用chmod xmain.py。