我希望我的投影仪在商场开门前打开,在商场关门时关闭。因此我创建了 crontab 条目(放置在 /etc/cron.d/mall 中),但今天(该服务器上的Thu Nov 22 18:58:29 EST 2012
当前时间date
),power-off.sh 脚本在 17:20 执行(请参阅下面的系统日志摘录)。
由于是 11 月 22 日星期四,我预计 power-off.sh 脚本将在 21:20 执行,按照下面第 4 个 crontab 行。
为什么 power-off.sh 在 17:20 执行?我的 crontab 条目有什么问题?
内容/etc/cron.d/mall
:
40 9 22-30 Nov Mon-Sat myuser /usr/local/projectors/power-on.sh
40 10 22-30 Nov Sun myuser /usr/local/projectors/power-on.sh
20 18 22-30 Nov Mon-Wed myuser /usr/local/projectors/power-off.sh
20 21 22-30 Nov Thu-Fri myuser /usr/local/projectors/power-off.sh
20 17 22-30 Nov Sat-Sun myuser /usr/local/projectors/power-off.sh
40 9 1-22 Dec Mon-Sat myuser /usr/local/projectors/power-on.sh
40 10 1-22 Dec Sun myuser /usr/local/projectors/power-on.sh
20 21 1-22 Dec Mon-Fri myuser /usr/local/projectors/power-off.sh
20 17 1-22 Dec Sat-Sun myuser /usr/local/projectors/power-off.sh
系统日志摘录:
$ grep power-off.sh /var/log/syslog
Nov 22 17:20:01 lanner-ubu-c2d CRON[23007]: (myuser) CMD (/usr/local/projectors/power-off.sh)
答案1
我最好的猜测是它无法处理,Sat-Sun
因为在手册页中crontab(5)
:
Names can also be used for the ``month'' and ``day of week'' fields. Use the first three letters of the particular day or month (case doesn't mat‐ ter). Ranges or lists of names are not allowed.
这意味着您的某些行完全不正确,可能会导致意外或至少未记录的行为。
因此,我建议将星期几的限制改为数字。
答案2
来自 crontab(5) 手册页:
注意:命令执行的日期可以通过两个字段指定:月份日期和星期几。如果两个字段都受到限制(即不是 *),则当任一字段与当前时间匹配时,将运行命令。例如,
30 4 1,15 * 5
将导致命令在每个月 1 日和 15 日的凌晨 4:30 以及每个星期五运行。