Crontab-月份中的日期似乎覆盖了星期几?

Crontab-月份中的日期似乎覆盖了星期几?

我有五台服务器运行 eventstore 集群。我想在不同的日期对每台服务器运行 crontab 命令。

  1. 周一跑步
  2. 周二运行等等

但我还想在每个月的第四周运行不同的命令。

我像这样设置它们,认为它应该可以工作 - 并且检查 crontab.guru 证实了我认为应该发生的事情;

机器 1-5:

  1. 30 6 1-21 * 星期一 /第一个要运行的命令
  2. 30 6 1-21 * 星期二 /第一个要运行的命令
  3. 30 6 1-21 * 星期三 /第一个要运行的命令
  4. 30 6 1-21 * 星期四 /第一个要运行的命令
  5. 30 6 1-21 * 星期五 /第一个要运行的命令

然后对第 4 周的命令分别执行类似的命令:

  1. 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 crontabubuntu。

注意:命令执行的日期可以通过两个字段指定 - 月份日期和星期几。如果两个字段都受到限制(即不以 * 开头),则只要任一字段与当前时间匹配,就会运行命令。

请检查您当地的 crontab 手册页。

相关内容