Запуск cronjob в нечетные дни

В настоящее время я запускаю свой скрипт резервного копирования MySQL каждый день недели:

0 1 * * 1 sh /root/mysql_monday.sh
0 1 * * 2 sh /root/mysql_tuesday.sh
0 1 * * 3 sh /root/mysql_wednesday.sh
0 1 * * 4 sh /root/mysql_thursday.sh
0 1 * * 5 sh /root/mysql_friday.sh
0 1 * * 6 sh /root/mysql_saturday.sh
0 1 * * 0 sh /root/mysql_sunday.sh

Теперь я хотел бы хранить резервные копии еще одну неделю, так что в общей сложности две недели, чтобы быть в большей безопасности.

Например: я, хотя я могу создать один файл резервной копии в понедельник в четные дни, а затем снова в нечетные дни.

В течение четных дней я могу просто использовать:

0 1 */2 * 1 sh /root/mysql_monday_even.sh
0 1 */2 * 2 sh /root/mysql_tuesday_even.sh
0 1 */2 * 3 sh /root/mysql_wednesday_even.sh
0 1 */2 * 4 sh /root/mysql_thursday_even.sh
0 1 */2 * 5 sh /root/mysql_friday_even.sh
0 1 */2 * 6 sh /root/mysql_saturday_even.sh
0 1 */2 * 0 sh /root/mysql_sunday_even.sh

Но как насчет нечетных дней?

4 ответа

Решение

Я сделал это по-своему;)

0 1 1,15,29 * * sh /root/mysql_monday.sh
0 1 2,16,30 * * sh /root/mysql_tuesday.sh
0 1 3,17,31 * * sh /root/mysql_wednesday.sh
0 1 4,18 * * sh /root/mysql_thursday.sh
0 1 5,19 * * sh /root/mysql_friday.sh
0 1 6,20 * * sh /root/mysql_saturday.sh
0 1 7,21 * * sh /root/mysql_sunday.sh
0 1 8,22 * * sh /root/mysql_monday2.sh
0 1 9,23 * * sh /root/mysql_tuesday2.sh
0 1 10,24 * * sh /root/mysql_wednesday2.sh
0 1 11,25 * * sh /root/mysql_thursday2.sh
0 1 12,26 * * sh /root/mysql_friday2.sh
0 1 13,27 * * sh /root/mysql_saturday2.sh
0 1 14,28 * * sh /root/mysql_sunday2.sh

Я нашел это на unix.stackexchange:

Синтаксис, который вы пробовали, на самом деле неоднозначен. В зависимости от того, сколько дней в месяце, некоторые месяцы будут работать в нечетные дни, а некоторые - в четные. Это потому, что способ расчета рассчитывает общее количество возможностей и разделяет их. Вы можете переопределить это поведение strage-ish, вручную указав диапазон дней и используя нечетное или четное количество дней. Поскольку четные дневные сценарии никогда не будут выполняться в 31-й день более длинных месяцев, вы ничего не потеряете, используя 30 дней в качестве базы для четных дней, и, указав специально для деления, как если бы было 31 день, вы можете вызвать нечетные исполнение.

Синтаксис будет выглядеть так:

Будет работать только в нечетные дни: 0 0 1-31/2 * * command

Будет работать только в четные дни: 0 0 0-30/2 * * command

Ваше беспокойство по поводу того, что месяцы не имеют одинакового количества дней, здесь не важно, потому что ни в одном месяце не будет БОЛЬШЕ дней, чем в этом, а для плохого февраля диапазон дат просто не будет совпадать с последним днем ​​или двумя, но это не принесет вреда, если это в списке.

Источник: Нечетный / Четный Крон

Конечно, лучшим решением было бы просто использовать подходящий сценарий резервного копирования MySQL, предназначенный для еженедельного, ежемесячного, ежегодного хранения?

Automysqlbackup должен работать просто идеально.

http://sourceforge.net/projects/automysqlbackup/

Другие вопросы по тегам