Сегодня 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).Это также описано на странице руководства, хотя это не очень ясно и легко понять:
источник
*/5
? Это будет 1,6,11,1,6 ... или 1,6,11,4,9 ...? Я предполагал, что «в пределах допустимого диапазона значений» означает, что у него нет памяти, но теперь я не был так уверен в этом.crond
просто берет список возможных значений, применяет селектор шага один раз и затем повторно использует эти результаты.Сегодня первый день ноября.
* / 2 означает, что ваш cronjob будет выполняться раз в два месяца, как вы говорите.
Таким образом, в следующем месяце (декабре) cronjob не будет выполнен, но месяц (январь) после него будет.
За месяц до этого месяца (октябрь) cronjob не был исполнен. Но в сентябре это было.
источник
*/2
в поле месяца эквивалентно1-11/2
, а не2-12/2
. Я не говорю, что вы не правы, но можете ли вы предоставить какую-либо подтверждающую документацию?