每两周使用 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)。
我有一个服务器 运行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)。