Cronjob星期六每周两周开始运行

今天是2014年10月3日星期五凌晨3点58分

我想安排一个类似的cronjob在以下date运行它:

  1. 星期六,2014年10月4日上午8:00
  2. 星期六,2014年10月18日上午8:00
  3. 星期六,2014年11月1日上午8:00 …

所以每两周,星期六,八点。

0 8 * * 6 test $((10#$(date +\%W)\%2)) -eq 1 && yourCommand 

date +%W :星期一,星期一,星期三,今天第39周

10#$(date +%W) :将date +W为十进制数,避免shell基础parsing混淆

$((39%2)) :模运算:结果为0(偶数周数)或1(奇数周数),本周结果为1,下周0

test 1 -eq 1 :算术testing(相等),在这种情况下结果是布尔真实的

&& yourCommand :Boolean AND:仅在前一个命令的结果为布尔值true时才运行yourCommand的命令

请注意,今年可能会有两个星期:53(今年)和1(明年)

你所显示的是“每周”。 那么代码是:

 0 8 * * 6 

你确定你需要每两周运行一次吗?

 0 8 * * 6 expr `date +\%s` / 604800 \% 2 >/dev/null || yourCommand