我想运行.py 脚本:
python /home/project/manage.py slope_update
如果我从 shell 运行它,那就没问题,但在 cron 中不起作用:
*/10 * * * * root python /home/project/manage.py slope_update
什么地方错了?
我从 root 编辑我的 /etc/crontab 文件
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
*/10 * * * * root /usr/bin/python /home/project/manage.py slope_update
在用户量子的帮助下:
*/10 * * * * root /usr/bin/python /home/project/manage.py slope_update >> /tmp/foo.log 2>&1
猫foo.log
未知命令:“slope_update”输入“manage.py help”了解使用方法。
为什么 slope_update 尝试用作命令,但必须有参数如果这个“python /home/project/manage.py slope_update”在终端中运行它就会起作用。为什么?
答案1
将错误重定向到文件将帮助您更轻松地调试:
*/10 * * * * root python /home/project/manage.py slope_update >> /tmp/foo.log 2>&1
答案2
尝试将 python 的完整路径放入你的 crontab 中,例如
*/10 * * * * root /usr/bin/python /home/project/manage.py slope_update
编辑:
问题是 cron 中的 PATH 不包含安装 python 的目录 (/usr/bin),因此您需要提供 python 的完整路径。
編輯 ...:
您是从 /etc/crontab 运行这个吗?如果不是,则不需要 root 参数,并且可能会导致问题。
当 cron 将作业的输出发送给您时,请检查电子邮件中是否有来自 cron 的邮件。
检查你的 python 所在的位置,which python
并相应地调整 crontab 中的路径。