任何想法,任何人?
Jeffrey Ang
问问题
762 次
4 回答
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 中包含一行,您也可以修改脚本以检查日期。
于 2009-04-12T19:39:29.093 回答
0
在第 1、第 2、第 4 个(也许第 5 个,可能会发生)周末运行它。
# m h dom mon dow command
* * 1-20,28-31 * 0 echo #test
我不知道它是每天运行,还是只在周日(第 0 天)运行,但它不会在 21 日到 27 日(第三周)运行。如果是第三周(或者不是星期天),在脚本中进行检查可能很简单。
于 2009-04-10T00:03:25.567 回答
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
于 2009-04-10T00:05:21.773 回答
0
- 在需要时创建一个运行给定脚本的 cron 作业,忽略第三个周末部分
- 制作一个在 21 上运行的 cron 作业,另一个在 28 上运行,以将脚本切换出和切换回另一个无操作脚本。
哈克但它会工作
于 2009-04-10T00:07:47.633 回答