Есть ли способ запланировать работу cron, которая не запускается на 3-й выходной месяца? - PullRequest
1 голос
/ 10 апреля 2009

Любые идеи, кто-нибудь?

Ответы [ 4 ]

2 голосов
/ 12 апреля 2009

Сохранить следующее как /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 была только одна строка.

0 голосов
/ 10 апреля 2009

Если вы хотите, чтобы он запускался в любую возможную субботу, кроме третьей (попробуйте № 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
0 голосов
/ 10 апреля 2009
  1. создать задание cron, которое при необходимости запускает данный скрипт, игнорируя часть 3-го выходного
  2. создайте задание cron, которое запускается 21 и другое 28, чтобы переключить сценарий назад и обратно для другого сценария без операции.

Хаки, но это будет работать

0 голосов
/ 10 апреля 2009

Запустите его в 1-е, 2-е, 4-е (и, может быть, 5-е, это может случиться) выходные.

# m h dom      mon dow   command
  * * 1-20,28-31 *   0     echo #test

Я понятия не имею, будет ли он работать каждый день или только по воскресеньям (день 0), но он не будет работать с 21 по 27 - третью неделю. Может быть достаточно просто поставить проверку в сценарии, который завершится, если это третья неделя (или не воскресенье).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...