每周交替cronjob(与步骤值)

我想要一个cronjob在每个月的第一个和第三个星期六运行,另一个在每个第二个和第四个星期六运行。 现在crond提供“步骤值”:

步长值可以与范围结合使用。 在“”范围之后指定数字在整个范围内的跳跃。 例如,可以在小时字段中使用“0-23 / 2”来每隔一小时指定命令的执行(V7标准中的替代选项是“0,2,4,6,8,10,12,14,16 ,18,20,22" )。 星号后也允许步骤,所以如果你想说“每两个小时”,只需使用“* / 2”即可。

但是,如果我使用

30 3 * * 6/2 command 

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

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

既然你知道在任何一个月的前7天内,只有一个星期六会发生,你可以按照这个模式,使用day-of-month字段来保持每个工作的不同:

 30 3 1-7,15-21 * 6 script1 30 3 8-14,22-28 * 6 script2 

因此, script2 1将始终抓住第一个和第三个星期六, script2总是抓住第二个和第四个。

为什么不使用cron#?

30 3 * * 6#1 Firstandthird命令
30 3 * * 6#3 Firstandthirdcommand
30 3 * * 6#2 SecondAndfourthCommand
30 3 * * 6#4 SecondAndfourthCommand

“星期几”字段允许使用散列号(#)“#”,并且必须后跟一个介于1和5之间的数字。 它允许你指定一个给定月份的“第二个星期五”的结构

http://en.wikipedia.org/wiki/Cron