在 cron 中使用参数运行脚本

在 cron 中使用参数运行脚本

我想运行.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 中的路径。

相关内容