Cron 任务不起作用

Cron 任务不起作用

我有一个 shell 脚本,我想将其作为 cron-job 每 10 分钟运行一次。我添加该作业如下

crontab -e

*/10 * * * * /bin/sh /home/tool/fill_data/run_script.sh

其中run_script.sh内容如下:

#!/bin/sh
python fill_tool.py

run_script.sh 的权限设置为可执行,如下所示:

chmod +x run_script.sh

在 cron 日志中,我可以看到 cron 运行了,但是脚本本身由于某种原因没有执行。当我直接运行 shell 脚本或 python 文件本身时,一切正常。

可能是什么问题?为什么 cron 作业不执行该文件?

答案1

正如@choroba 在评论中指出的那样,cronjobs 有不同的环境,这PATH也意味着不同的变量。

为了使其发挥作用,你可以做以下两件事之一:

  1. 将以下内容添加到您的 cron 作业文件(您已在其中定义 cron 作业):
PATH=$PATH:/usr/bin

/usr/bin/Python 解释器所在的路径在哪里。我给出的示例是在 Ubuntu 20.04 上。您可以使用以下命令查看解释器的位置:

whereis python3
  1. 您可以做的第二件事是摆脱这个 cronjob 中所有不必要的部分:

在你的 Python 脚本顶部添加一个 shebang:

#!/usr/bin/env python3

使python脚本可执行:

chmod +x fill_tool.py

然后只需执行 cronjob 中的 python 脚本:

*/10 * * * * /path/to/fill_tool.py

这也应该有效并且是更好的做法。

注意:您可以根据需要将 python3 替换为 python/python2。

相关内容