crontab 只运行一些命令?

crontab 只运行一些命令?

我有一个 Raspberry Pi 2,我将其用作信息亭,为此我安装了基于 Raspbian 的 FullPageOS 发行版。

一切工作正常,除了某些命令在尝试从 crontab 运行时默默失败。

我有 2 个命令用于由 pi 用户在特定时间打开和关闭信息亭:

$crontab -l -u pi
# m h  dom mon dow   command
05 9 mon-fri * * /bin/bash /home/pi/scripts/dispon.sh >> /tmp/cronjob.log 2>&1
15 18 mon-fri * * /usr/bin/xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1
*/3 * * * * /usr/bin/touch /tmp/1111 >> /tmp/cronjob.log 2>&1

正如您所看到的,我尝试了不同的方法:在监视器关闭序列中直接执行 xset,并在打开监视器时作为脚本的一部分执行。

dispon.sh 脚本的内容(chmod a+x):

#!/bin/bash
xset -display :0 dpms force on
xset -display :0 -dpms

这两个命令似乎都不起作用(显示无法打开/关闭),并且都没有在 /tmp/cronjob.log 中留下任何错误消息

但 touch 命令确实有效并触摸了文件。

当 pi 用户通过 SSH 连接运行时,两者都xset可以正常工作。dispon.sh

有任何想法吗??

答案1

crontab文件格式 ( )的手册页man 5 crontab写道,

名称也可用于“月”和“星期几”字段。使用特定日期或月份的前三个字母(不区分大小写)。不允许使用名称范围或列表。

注意最后一句:你不能使用mon-fri(但你可以使用1-5)。

您还错过了注释(第一行)提醒您正确的字段顺序:分钟、小时、月份、月份、星期、命令;但您太早放置了星期几的值。这个更正后的crontab文件应该更适合您:

SHELL=/bin/bash
PATH=/usr/bin:/bin:/usr/local/bin:/home/pi/scripts

# m h  dom mon dow   command
05 9 * * 1-5     dispon.sh >> /tmp/cronjob.log 2>&1
15 18 * * 1-5    xset -display :0 dpms force off >> /tmp/cronjob.log 2>&1
*/3 * * * *      touch /tmp/1111 >> /tmp/cronjob.log 2>&1

最后,如果您发现它cron显然忽略了您的条目,您可以搜索其最近的日志报告以查看发生了什么(如果有的话):

grep CRON /var/log/syslog

答案2

您的 dom 字段第 3 列应指定该命令每月应运行的天数,例如 1-3 表示每月仅运行第 1 至 3 天。您需要将工作日周一至周五移至最后一列。

相关内容