每周交替 cronjob(带有步长值)

d13*_*r43 5 cron

我想要一个 cronjob 在一个月内的每个第 1 个和第 3 个星期六运行,另一个在每个第 2 个和第 4 个星期六运行。现在 crond 提供“步骤值”:

步长值可以与范围结合使用。在带有 "" 的范围之后指定跳过该范围内的数字值。例如,可以在 hours 字段中使用“0-23/2”来指定每隔一小时执行一次命令(V7 标准中的替代方案是“0,2,4,6,8,10,12,14,16 ,18,20,22")。星号后也允许步进,因此如果您想说“每两个小时”,只需使用“*/2”。

但如果我使用

30 3 * * 6/2 command
Run Code Online (Sandbox Code Playgroud)

两个脚本都(不确定地)在每个第二个星期六运行。让它们交替运行的正确方法是什么?

我知道包装脚本的可能性,但如果有更优雅的解决方案,我想避免它。

Sma*_*ger 6

由于您知道每个月的前 7 天只有一个星期六,因此您可以遵循该模式并使用该day-of-month字段将每个工作分开:

30 3 1-7,15-21 * 6 script1
30 3 8-14,22-28 * 6 script2
Run Code Online (Sandbox Code Playgroud)

因此script1将始终赶上第一个和第三个星期六,script2并将始终赶上第二个和第四个星期六。