今天是2014年10月3日星期五凌晨3点58分
我想安排一个类似的cronjob在以下date运行它:
所以每两周,星期六,八点。
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