我将其添加到几个不同的 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
答案1
看一下man 5 crontab
。
注意:命令执行的日期可以通过两个字段指定 - 月份日期和星期几。如果两个字段都受到限制(即不是 *),则当任一字段与当前时间匹配时,将运行命令。例如,“30 4 1,15 * 5”将导致命令在每个月 1 日和 15 日以及每个星期五的凌晨 4:30 运行。但是,可以通过向命令添加测试来实现所需的结果(请参阅下面的示例 CRON 文件中的最后一个示例)。
因此,您的服务器应该每天 15 点至 21 点以及每周二重启。
看一下手册页的示例:
# Run on every second Saturday of the month
0 4 8-14 * * test $(date +\%u) -eq 6 && echo "2nd Saturday"