每周Cron工作

时间:2012-01-01 16:37:20

标签: linux cron

我想创建周日每2周运行一次的Cron作业,我试过这个但是得到错误的一周糟糕的一天

47 15 * * SUN/2 export DISPLAY=:0 && /usr/lib/jvm/jdk1.6.0_21/jre/bin/java -jar /home/ahmed/Projects/DimensionProject/ProviderJar/FtpDownload.jar  LightningSource /home/ahmed/NetBeansProjects/trunk/BookDimensionProject/build/web/linconfig.xml 

所以任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

从手册:

  

步长值可与范围结合使用。以下范围   用``/''指定跳过数字的值   范围。

此处的关键字是“范围”,您不能指定每2周运行一次。

你可以每周运行一次,并将java包装在一个bash脚本中,该脚本仅在奇数周甚至几周内运行它:

#!/bin/bash

if [[ $(($(date +%V) % 2)) -eq 0 ]]; then exit; fi
export DISPLAY=:0 && /usr/lib/jvm/jdk1.6.0_21/jre/bin/java -jar /home/ahmed/Projects/DimensionProject/ProviderJar/FtpDownload.jar  LightningSource /home/ahmed/NetBeansProjects/trunk/BookDimensionProject/build/web/linconfig.xml 

或者您可以在月份字段中指定一些范围:

47 15 1-7,15-21 * SUN export DISPLAY=:0 && /usr/lib/jvm/jdk1.6.0_21/jre/bin/java -jar /home/ahmed/Projects/DimensionProject/ProviderJar/FtpDownload.jar  LightningSource /home/ahmed/NetBeansProjects/trunk/BookDimensionProject/build/web/linconfig.xml 

答案 1 :(得分:0)

我们可以使用date +%s来获取自Epoch以来的秒数,将其转换为周数(604800秒= 1周),并仅在奇数周内运行cron作业:

47 15 * * SUN    test $(expr $(date +%s) / 604800 % 2) -eq 1 && echo "Every other Sunday"