我有一个 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 天。您需要将工作日周一至周五移至最后一列。