我有一台运行Linux操作系统的服务器。我正在尝试安排一个Cron作业,以便在周二上午9点每两周(两周一次)运行一次任务。我只能通过注释(如果我不想在本周运行作业)和取消注释(如果我想在本周运行作业)手动运行任务,如下所示:
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脚本似乎不起作用。
任何想法
0 4 * * 2 test $((10#$(date +\%W)\%2)) -eq 1 && execute_cmd
我们首先使用date
来获取星期数并正确设置格式,然后使用“ test”命令完成“二分之一的时间”。
'test'根据给定的表达式求值为true或false,在这里,它求$((10#$(date + \%W)\%2))等于1(因此为-eq 1),否则为如果周数为奇数,则返回true。因此,此crontab将在奇数周的星期二(2)的凌晨4点(0 4)执行。