尝试找出脚本在 Cron 中无法正常运行的原因。
设置 shell 每分钟调用一个 *.py 文件,其中包含以下内容(删除了开头和结尾 # 行):
* * * * * python /root/job.sh
job.sh 运行一个 *.py 文件,该文件检查 I2C 温度模块并将结果发送到 Ubidots。手动操作效果很好。尝试重新启动 Cron(启动、启用和重新启动)以及其他一些变体,例如添加用户名和 job.sh 的完整路径。
这是脚本:
#!/usr/bin/env python
python /root/temperature-monitor/main.py
该文件具有以下属性(还尝试了 chmod a+x、u+x、755、666 等):
-rwx--x--x 1 root root 62 Jul 21 15:07 job.sh
检查 logread 表明 cron 正在运行:
Fri Jul 21 15:38:00 2017 cron.info crond[3464]: USER root pid 3491 cmd /root/job.sh
创建一个日志文件并将输出定向到其中,如下所示:
* * * * * python /root/job.sh >/root/test1.log 2>&1
文件中的输出包含以下内容:
-ash: crontab.txt: not found
但是 crontab.txt 在 /etc/crontabs 中作为 root(文件名)列出,其中列出了作业。
关于下一步要尝试什么有什么想法吗?只是不要让脚本在启动后无限循环运行。
答案1
从 crontab 中,您调用 python 来运行 shell 脚本(这不是 python 脚本)。将 python 更改为 sh (或 ash 或 bash),我想您会发现它效果更好。
答案2
您不需要python
放入crontab
.它是一个 shell 脚本,并且 python 从脚本内部运行。由于该脚本是可执行的并且具有 shebang 行,因此您可以将脚本本身作为命令执行。
* * * * * /root/job.sh