![Crontab-月份中的日期似乎覆盖了星期几?](https://linux22.com/image/772438/Crontab-%E6%9C%88%E4%BB%BD%E4%B8%AD%E7%9A%84%E6%97%A5%E6%9C%9F%E4%BC%BC%E4%B9%8E%E8%A6%86%E7%9B%96%E4%BA%86%E6%98%9F%E6%9C%9F%E5%87%A0%EF%BC%9F.png)
我有五台服务器运行 eventstore 集群。我想在不同的日期对每台服务器运行 crontab 命令。
- 周一跑步
- 周二运行等等
但我还想在每个月的第四周运行不同的命令。
我像这样设置它们,认为它应该可以工作 - 并且检查 crontab.guru 证实了我认为应该发生的事情;
机器 1-5:
- 30 6 1-21 * 星期一 /第一个要运行的命令
- 30 6 1-21 * 星期二 /第一个要运行的命令
- 30 6 1-21 * 星期三 /第一个要运行的命令
- 30 6 1-21 * 星期四 /第一个要运行的命令
- 30 6 1-21 * 星期五 /第一个要运行的命令
然后对第 4 周的命令分别执行类似的命令:
- 30 6 22-29 * 星期一/第 4 周-运行命令 (重复上述 DOW)
所以对于今天 - 19 号星期五,我只希望机器 #5 在 06:30 运行 /first-command-to-run,而其他四台不执行任何操作。
我非常有信心这会按预期发挥作用,但似乎全部五个机器今天早上运行了/first-command-to-run,而不仅仅是星期五的机器。
但是没有人运行 /week4-command-to-run,因此月份中的日期超出 22-29 范围可以正确阻止这种情况发生。
我现在想知道,通过指定月份范围,这是否会导致 cron 忽略星期几。可能是这样吗?如果不是,我做错了什么?
操作系统是 Rocky 8.4
(注意:我知道并且同意具体的日期可能不在严格的星期范围内。)
答案1
根据man 5 crontab
ubuntu。
注意:命令执行的日期可以通过两个字段指定 - 月份日期和星期几。如果两个字段都受到限制(即不以 * 开头),则只要任一字段与当前时间匹配,就会运行命令。
请检查您当地的 crontab 手册页。