Циклические задачи cron - PullRequest
       11

Циклические задачи cron

1 голос
/ 20 декабря 2010

Мне нужно настроить еженедельное электронное письмо, которое будет циклически изменяться между 4 вариантами, например:

  1. вариант a
  2. , затем b
  3. , затем c
  4. , затем d
  5. , затем обратно на
  6. и т. Д.

каждую неделю.

Я бы хотел сделать это, используя задачи 4 cron(каждый из которых отправляет электронное письмо каждые 4 недели), но у меня возникают проблемы с их разбивкой, так что каждое задание начинается на другой неделе, вместо того, чтобы все они отправляли свои электронные письма в первую неделю, а затемничего в течение следующих 4 недель.

Мой crontab в данный момент выглядит так:

0  8  *  *  1/4  echo "Variation A" | mail -s "Test email" admin@mydomain.com
0  8  *  *  1/4  echo "Variation B" | mail -s "Test email" admin@mydomain.com
0  8  *  *  1/4  echo "Variation C" | mail -s "Test email" admin@mydomain.com
0  8  *  *  1/4  echo "Variation D" | mail -s "Test email" admin@mydomain.com 

Я чувствую, что могу контролировать, когда каждый отправляет письмо в первый разтогда я мог бы заставить его работать правильно?

Кто-нибудь может увидеть лучший способ сделать это?Желательно с минимальным количеством сценариев (я хотел бы сохранить все детали в crontab)

1 Ответ

0 голосов
/ 20 декабря 2010

Это не то, что вы можете сделать только с помощью cron.Для этого вам нужно будет использовать какой-то сценарий, сохраняющий последний отправленный вариант и решающий, какой из них следует отправить на основе этой информации.Запись в cron будет выглядеть примерно так:

0 8 * * 0 somescript.sh

Это выполнит скрипт в 8 утра каждое воскресенье.Сам скрипт должен решить, какое сообщение отправить.

Вы можете использовать что-то вроде этого:

#!/bin/sh

STATEFILE='emailstate'
VARIATION=`cat emailstate 2>/dev/null`

case "$VARIATION" in
    '4' )
        # send variation 4
        echo 'Sending variation 4'

        VARIATION='1'
        ;;

    '3' )
        # send variation 3
        echo 'Sending variation 3'

        VARIATION='4'
        ;;

    '2' )
        # send variation 2
        echo 'Sending variation 2'

        VARIATION='3'
        ;;

    *   )
        # send variation 1
        echo 'Sending variation 1'

        VARIATION='2'
        ;;
esac

echo $VARIATION > $STATEFILE
...