Синхронизация Crontab работает не так, как ожидалось

#cron #crontab #cronexpression

#cron #crontab #cronexpression

Вопрос:

У меня есть сценарий резервного копирования, синхронизирующий некоторые файлы каждый 3-й день.

 # m    h   dom  mon  dow
  0    5   */3    *    *     backup      /home/backup/scripts/system_backup.sh
 

Сегодня я проверял резервную копию, и ее не было.

Я ожидал, потому что сегодня 27-е число, 27 / 3 это четное число, оно будет выполнено.

Временные метки других резервных копий содержат дни 19 , 22 , 25

Разве он не должен выполняться, как в дни 18 , 21 , 24 , 27 ?

Временная метка сервера прямо сейчас Fri Jun 27 08:52:00 UTC 2014 .

Ответ №1:

Со страницы руководства для crontab(5) :

Значения шага могут использоваться в сочетании с диапазонами. После диапазона с помощью `/» указывается пропуск значения числа через диапазон.

По сути, это означает, что значения используются в индексах на основе 0, которые делятся на <number> .

Для dom * это то же 1-31 самое, что и . Так */3 и есть 1-31/3 . Это означает, что он начнется с 1 (индекс 0), затем добавит 3, чтобы перейти к следующему (4, с индексом 3) и так далее.

Если вы хотите, чтобы cron выполнялся в дни, кратные трем, вы можете использовать 3-31/3 вместо этого.

Комментарии:

1. Итак, левая сторона — это диапазон, а правая сторона — шаги. Когда я говорю «каждый второй день», для меня это звучит логично (1, 3, 5 — не умножается на 2). Спасибо!