如何在cron中排除一周中的某一天,并且仅在某一周内排除

时间:2011-08-10 15:39:17

标签: cron

基本上,我想在每个月的第五个星期五的第一,第二,第四和如果可用的情况下开展工作。或者换句话说,除了第三个星期五之外的所有星期五。

编辑:这是更面向Java的,无法访问bash环境。

1 个答案:

答案 0 :(得分:0)

您可以在脚本中手动检查它:

date "%u"

为您提供星期几(与cron中的dow字段相同)

要获得每个月的周数,你必须做一些时髦的事情。

date +"%V" 

为您提供该月的一周,因此您必须查看

x=`date +"%V"`
y=`date +"%V" -d $(date +"%Y%m01")`
week_of_month=$((x-y))

week_of_month从0开始,因此您需要检查它是否不是两个。

所以在你的cron中,你会在每个星期五运行脚本,并在脚本的顶部进行检查:

x=`date +"%V"`
y=`date +"%V" -d $(date +"%Y%m01")`
week_of_month=$((x-y))
if [ "$week_of_month" == "2" ]; then
    echo "Will not run second friday of the month"
    exit;
fi