我想创建周日每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
所以任何人都可以帮忙吗?
答案 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"