我有五台服务器运行 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 手册页。