我在我的 Raspberry PI 上做了一个项目,除了例程外,它运行良好crontab
。我已经阅读了很多有关该主题的内容,但找不到错误。当我运行这个脚本时
/home/icf/catFeeder/checkDispenseFood.sh
在终端中它运行良好。
这是 checkDispenseFood.sh
:
#!/bin/sh
cd /
cd home/icf/catFeeder
sudo python checkDispenseFood.py
cd /
的所有者checkDispenseFood
是 root,权限是每个人/单独所有者/每个人。
当我检查我的 cronlog 时,我看到这个:
Jul 25 10:00:01 raspberrypi CRON[1850]: (root) CMD /home/icf/catFeeder/checkDispenseFood.sh >> /home/icf/logs/cronlog)
Jul 25 10:00:01 raspberrypi CRON[1849]: (CRON) info (No MTA installed, discarding output)
并且准确地按照设定的时间进行。
这是我找到的 cron sudo crontab -e
:
0 * * * * /home/icf/catFeeder/checkDispenseFood.sh >> /home/icf/logs/cronlog
但什么也没发生。我缺少什么?
答案1
我必须在回答中做出一些假设,所以这是最好的猜测:
.sh
我根本不认为有必要编写脚本。您可以从crontab
如下所示运行 Python 脚本。
我无法评论需要对于提升的权限 ( sudo
),但由于您使用的是root's crontab
,因此任何脚本都将以提升的权限执行。你不应该sudo
在从 运行的任何程序/脚本中使用root's crontab
。
如果您确实需要此猫喂食器的提升权限,请在以下位置使用此行root crontab
:
0 * * * * /usr/bin/python /home/icf/catFeeder/checkDispenseFood.py >> /home/icf/catFeeder/cronlog.txt 2>&1
此条crontab
目将使用您的系统运行指定的 .py 脚本默认版本Python 的。您可以从命令行检查系统默认值,如下所示:
python --version
确保您的 .py 脚本与系统默认值兼容。如果没有,请更改默认值,或更改您的脚本。
WRT 您从 cronlog 共享的消息:
第一条消息中的最后一个字符是“右括号”
)
,它似乎是无与伦比的,可能提示用户输入错误?第二条消息表明您的 Raspberry Pi 上没有安装邮件传输代理 (MTA)。如果您使用 RPiOS(née Raspbian),默认发行版中没有 MTA,然而
cron
(默认情况下)仅当您的作业输出没有有效的重定向时才联系 MTA。因此,您似乎没有正确配置重定向。我认为crontab
上面提供的行将捕获程序的输出和错误。
希望这有帮助,如果没有请告诉我们。