每两周使用 Linux Cron 执行 运行 任务

Using Linux Cron to Run Task every Fortnight

我有一个服务器 运行ning Linux 操作系统。我正在尝试在星期二上午 9 点每两周(双周)安排一项 cron 作业 运行 一项任务。 我只能通过评论手动 运行 任务(如果我不想 运行 这周的工作)和取消评论(如果我想 运行 这个工作周)如下:

0 9 * * 2   root    java -jar test.jar   // will run

# 0 9 * * 2 root    java -jar test.jar   // will not run 

我尝试使用以下 cron 作业:

0 9 * * 2  case $(($(date +\%s) / (60*60*24*7))) in *[02468]) root  java -jar test.jar 

但是这个 cron 脚本似乎不起作用。

任何想法

我会尝试在两个星期二中的每个星期二凌晨 4 点执行:

0 4 * * 2 test $((10#$(date +\%W)\%2)) -eq 1 && execute_cmd

我们首先使用 date 获取周数并正确格式化,然后使用 'test' 命令完成 'one time out of two' 事情。

'test' 根据给定的表达式评估为真或假,在这里,它评估 $((10#$(date +\%W)\%2)) 是否等于 1(因此 -eq 1),换句话说,如果周数为奇数,则 returns 为真。

因此此 crontab 将在奇数周执行,即星期二 (2) 凌晨 4 点 (0 4)。

这里有更深入的细节: https://serverfault.com/questions/633264/cronjob-run-every-two-weeks-on-saturday-starting-on-this-saturday