任何想法,任何人?
答案 0 :(得分:2)
将以下内容保存为/usr/local/bin/is_third_week_in_month.sh
或某个地方
#!/bin/bash
if [ $# != 3 ]
then
echo "Usage: $0 <yyyy> <mm> <dd>" 1>&2
exit 127
fi
YEAR=$1
MONTH=$2
DAY=$3
FIRST_WEEK_IN_MONTH=`date +%V -d $YEAR-$MONTH-01`
WEEK_FOR_DAY=`date +%V -d $YEAR-$MONTH-$DAY`
DIFF=$(($WEEK_FOR_DAY - $FIRST_WEEK_IN_MONTH))
if [ $DIFF = 2 ]
then
# this is the third week
exit 0
else
exit 1
fi
然后添加到crontab
12 00 * * 1,2,3,4,5 your_command
12 00 * * 6,7 test ! /usr/local/bin/is_third_week_in_month.sh `date "+%Y %m %d"` && your_command
如果你想在crontab中只有一行,你可以修改脚本以检查日期。
答案 1 :(得分:0)
在第1天,第2天,第4天(可能是第5天,可能会发生)周末运行。
# m h dom mon dow command
* * 1-20,28-31 * 0 echo #test
我不知道这是每天还是周日(第0天),但它不会在21日到27日 - 第三周运行。如果是第三周(或者不是星期天),可以很简单地检查将退出的脚本。
答案 2 :(得分:0)
如果你希望它在任何可能的星期六上运行,除了第三个星期六(尝试#3):
GREP=/usr/local/bin/grep
TODAY=/bin/date "+%d"
THIRD_SAT=/bin/date -v1d -v+1m -v-7d -v-sat "+%d"
#min hr day month weekday script
0 0 * * 6 ($THIRD_SAT | $GREP $TODAY) || /bin/echo doit
答案 3 :(得分:0)
Hacky但它会起作用