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

Почему мое задание cron было выполнено в этом месяце?

Сегодня 1 ноября 2016 года или (однозначно) цифрами, 2016-11-01.

У меня есть задание cron для пользователя, настроенное следующим образом:

# m h  dom mon dow   command
33  3   1  */2  *    /home/user/...

Предполагается, что он будет запускаться раз в два месяца в первое число месяца в 3:33 утра, независимо от того, какой это день недели, но по какой-то причине он запускался сегодня, хотя 11 не делится на 2.

Кто-нибудь может мне это объяснить? Мое предположение о делимости на 2 неверно?

РЕДАКТИРОВАТЬ: я забыл упомянуть, я бегу cron версия «3.0pl1-127 + deb8u1» на машине Debian 8.6 «Jessie».

В / не является арифметическим выражением, вместо этого оно описывает «значения шага» по разрешается диапазон значений. Итак, поскольку месяцы всегда начинаются с 1 вместо того 0, /2 будет означать «принять любое другое значение», что приведет к (1, 3, 5, 7, 9, 11).

Это также описано на странице руководства, хотя это не так уж и ясно и понятно:

Значения шагов можно использовать вместе с диапазонами. После диапазона с "<число>" указывается пропуск значения числа в диапазоне. Например, «0–23 / 2» можно использовать в поле часов, чтобы указать выполнение команды каждый второй час (альтернатива в стандарте V7 - «0,2,4,6,8,10,12,14,16 , 18,20,22 "). Шаги также разрешены после звездочки, поэтому, если вы хотите сказать «каждые два часа», просто используйте «* / 2».

Сегодня первый день ноября.

* / 2 означает, что ваша cronjob будет выполняться раз в два месяца, как вы сказали.

Таким образом, в следующем месяце (декабре) cronjob не будет выполняться, но будет выполнен месяц (январь) после него.

За месяц до этого месяца (октябрь) задание cron не было выполнено. Но в сентябре это было.