[英]Crontab fails to execute Python script
crontab
无法执行Python脚本。 我用来运行Python脚本的命令行是可以的。
这些是我尝试的解决方案:
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是:
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
下的其他模块调用一些方法,这有关系吗?
有人可以帮帮我吗?
main.py脚本从python_prj下的其他模块调用一些方法,这有关系吗?
是的,它确实。 所有模块都需要在运行时找到。 您可以通过多种方式完成此操作,但最合适的可能是在crontab中设置PYTHONPATH变量。
您可能还想在crontab中设置MAILTO变量,以便收到任何回溯的电子邮件。
[更新]这里是我的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分钟运行一次清理操作,小时除外)。
脚本中的任何文件访问权限? 如果是这样,您是否在脚本中使用了相对路径(甚至:没有显式路径)?
从命令行运行时,实际文件夹是“您的路径”,从中启动脚本。 当由cron运行时,“您的路径”可能会因环境变量而异。
因此,请尝试使用您访问的任何文件的绝对路径。
检查脚本的权限。 确保它可以通过cron执行 - 尝试chmod + x main.py.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.