从本周六开始,Cronjob 每两周的周六运行一次

从本周六开始,Cronjob 每两周的周六运行一次

今天是 2014 年 10 月 3 日星期五 上午 3:58

我想安排一个这样的 cronjob 在以下日期运行它:

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

所以每两周,星期六,晚上 8 点。

答案1

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

date +%W:一年中的第几周,以星期一为第一天,今天是第 39 周

10#$(date +%W):转换date +W为十进制数并避免 shell 基础解析混淆

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

test 1 -eq 1:算术测试(相等),在这种情况下结果为布尔值 true

&& yourCommand:布尔与:yourCommand仅当前一个命令的结果为布尔真时才运行

请注意,年份可以有两个奇数周:53(今年)和 1(明年)

答案2

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

0 8 * * 6

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

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

相关内容