我有一个 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
也意味着不同的变量。
为了使其发挥作用,你可以做以下两件事之一:
- 将以下内容添加到您的 cron 作业文件(您已在其中定义 cron 作业):
PATH=$PATH:/usr/bin
/usr/bin/
Python 解释器所在的路径在哪里。我给出的示例是在 Ubuntu 20.04 上。您可以使用以下命令查看解释器的位置:
whereis python3
- 您可以做的第二件事是摆脱这个 cronjob 中所有不必要的部分:
在你的 Python 脚本顶部添加一个 shebang:
#!/usr/bin/env python3
使python脚本可执行:
chmod +x fill_tool.py
然后只需执行 cronjob 中的 python 脚本:
*/10 * * * * /path/to/fill_tool.py
这也应该有效并且是更好的做法。
注意:您可以根据需要将 python3 替换为 python/python2。