crontab 不执行 .sh

crontab 不执行 .sh

我在我的 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 共享的消息:

  1. 第一条消息中的最后一个字符是“右括号” ),它似乎是无与伦比的,可能提示用户输入错误?

  2. 第二条消息表明您的 Raspberry Pi 上没有安装邮件传输代理 (MTA)。如果您使用 RPiOS(née Raspbian),默认发行版中没有 MTA,然而 cron(默认情况下)仅当您的作业输出没有有效的重定向时才联系 MTA。因此,您似乎没有正确配置重定向。我认为crontab上面提供的行将捕获程序的输出和错误。

希望这有帮助,如果没有请告诉我们。

相关内容