crontab是星期几还是一个月几号?


14

我将此添加到一些不同的linux&freebsd系统上的/ etc / crontab中:

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

我想在每个月的第三个星期二重新启动。但是,所有系统在本月的第三个星期三(第19个)重新启动。

我究竟做错了什么?

更新:由于下面的Ranon的回答,看起来下面的修订版可以工作,任何人都可以确认还是有更好的方法呢?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now

Answers:


16

看一看man 5 crontab

注意:命令的执行日期可以由两个字段指定-每月的日期和星期几。如果两个字段都受限制(即不是*),则当任何一个字段与当前时间匹配时,将运行该命令。例如,``30 4 1,15 * 5''将导致一个命令在每个月的1号和15号的凌晨4:30以及每个星期五运行。但是,可以通过在命令中添加测试来获得所需的结果(请参见下面的Example CRON FILE中的最后一个示例)。

因此,您的服务器应该每天从15-21开始,并在每个星期二重新启动。

看一下联机帮助页的示例:

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"

6
这看起来像是一个设计错误。如果我想每天从15-21到每个星期二,我会分别输入两个crontab条目。必须诉诸单独的测试是一个丑陋的黑客。也就是说,感谢您提供解决方法!
劳伦斯·贡萨尔维斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.