Назад | Перейти на главную страницу

Ежедневная, еженедельная и ежемесячная работа Cron

Недавно я написал простой небольшой скрипт для резервного копирования каталога на S3. Моя цель - запускать ежедневные, еженедельные и ежемесячные резервные копии с разными правилами хранения в зависимости от частоты в S3.

Все работает неплохо, за одним исключением. Мое ЕЖЕНЕДЕЛЬНОЕ задание cron выполняется каждый день. Вот crontab:

0 3 1 * * /usr/s3_sync_dir /dropbox MONTHLY
0 2 2-31 * THU /usr/s3_sync_dir /dropbox WEEKLY
0 3 2-31 * * /usr/s3_sync_dir /dropbox DAILY

Таким образом, ЕЖЕМЕСЯЧНАЯ работа запускается в 3 часа ночи 1 числа каждого месяца. ЕЖЕНЕДЕЛЬНЫЙ затем должен идти по четвергам в 2 часа ночи, если это не первое. И DAILY запускается каждый день, а не первый. это онлайн-валидатор подтверждает что ЕЖЕНЕДЕЛЬНАЯ должна проходить каждый четверг.

У кого-нибудь есть мысли, почему моя ЕЖЕНЕДЕЛЬНАЯ работа выполняется каждое утро?

Это на Ubuntu 16.04.2 LTS.

Из руководства (man 5 crontab)

Примечание. День выполнения команды можно указать в двух полях - день месяца и день недели. Если оба поля ограничены (т. Е. Не *), команда будет запущена, когда одно из полей соответствует текущему времени. Например, `` 30 4 1,15 * 5 '' вызовет выполнение команды в 4:30 1-го и 15-го числа.
каждый месяц плюс каждую пятницу. Однако можно достичь желаемого результата, добавив к команде тест (см. Последний пример в ПРИМЕРЕ CRON FILE ниже).

Думаю, тебе стоит превратить свои 2-31 в *

ИЛИ

вы можете использовать @daily, @weekly и @monthly.

ИЛИ

вы можете ссылаться на свои скрипты в /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly.