Выражения Cron


Cron - это программное обеспечение для выполнения заданий с указанной периодичностью. Для управления cron разработаны специальные конструкции - сron expressions, позволяющие задавать, время, день и интервал повторения.


Выражение cron - это строка, состоящая из 6 или 7 полей, разделённых пробелами. Каждое поле может содержать значения и специальные символы, разрешённые для этого поля, а так-же их комбинацию.

Поле Обязательное Значения Cпец. символы
Секунды 0-59 , - * /
Минуты 0-59 , - * /
Часы 0-23 , - * /
День месяца 1-31 , - * ? / L W
Месяц 1-12 или JAN-DEC , - * /
День недели 1-7 или SUN-SAT , - * ? / L #
Год 1970-2099 , - * /
Регистр букв значения не иммет.

Символ Описание
* Используется для выбора всех значений в поле. Например, в поле минута означает каждую минуту.
? Например, если требуется, чтобы задание выполнялось в определённый день месяца (скажем, 10-го), но не имеет значения, в какой день недели это будет, стоит ввести 10 в поле день месяца и ? в поле *день недели. Смотрите примеры ниже для пояснения.
- Используется для указания диапазонов. Например, 10-12 в поле час означает выполнить в 10, 11 и 12 часов.
, Используется для списка значений. Например, 9,16 в поле час, означает выполнить в 9 и 16 часов.
/ Используется для указания приращений. Например, 0/15 в поле секунд, означает секунды 0, 15, 30 и 45. А 5/15 в поле секунд означает секунды 5, 20, 35 и 50.
L Последний. Иимеет разное значение в каждом из двух полей, в которых оно допускается. Например, значение L в поле «день месяца» означает последний день месяца — 31-й день января, 28-й день февраля в невисокосные годы. Если оно используется в поле день недели само по себе, означает просто 7 или «SAT». Но если оно используется в поле день недели после другого значения, то означает «последний xxx день месяца» — например, «6L» означает «последнюю пятницу месяца». Вы также можете указать смещение от последнего дня месяца, например «L-3», что означает предпоследний день календарного месяца. При использовании опции «L» важно не указывать списки или диапазоны значений, так как вы получите непонятные/неожиданные результаты.
W Рабочий день. Используется для указания ближайшего к заданному дню дня недели (с понедельника по пятницу). Например, если вы укажете 15W в качестве значения для поля «день месяца», это будет означать: «ближайший к 15-му числу месяца день недели». Таким образом, если 15-е число — суббота, триггер сработает в пятницу, 14-го числа. Если 15-е число приходится на воскресенье, триггер сработает в понедельник, 16-го числа. Если 15-е число приходится на вторник, триггер сработает во вторник, 15-го числа. Однако если вы укажете 1W в качестве значения для дня месяца, а 1-е число приходится на субботу, триггер сработает в понедельник, 3-го числа, так как он не «перепрыгнет» через границу дней месяца. Символ W можно указать только в том случае, если день месяца — это один день, а не диапазон или список дней
# используется для указания «n-го» XXX-го дня месяца. Например, значение 6#3 в поле «день недели» означает «третью пятницу месяца» (день 6 = пятница, а #3 = 3-й день в месяце). Другие примеры: 2#1 = первый понедельник месяца, 4#5 = пятая среда месяца. Обратите внимание, что если вы укажете #5, а в указанном месяце не будет 5-го числа, то в этом месяце увольнение не состоится.

Выражение Коментарий
0 0 12 * * ? В 12:00:00 каждый день
0 15 10 ? * * В 10:15:00 каждый день
0 15 10 * * ? В 10:15:00 каждый день
0 15 10 * * ? * В 10:15:00 каждый день
0 15 10 * * ? 2005 В 10:15:00 каждый день в течение 2005 года
0 * 14 * * ? Каждый день, с 14:00:00 до 14:59 каждую минуту
0 0/5 14 * * ? Каждые 5 минут, начиная с 14:00:00 и заканчивая в 14:55, каждый день
0 0/5 14,18 * * ? Каждые 5 минут с 14:00 до 14:55 и каждые 5 минут с 18:00 до 18:55 каждый день
0 0-5 14 * * ? Каждую минуту, начиная с 14:00 и заканчивая 14:05, каждый день
0 10,44 14 ? 3 WED В 14:10 и в 14:44 каждую среду в марте
0 15 10 ? * MON-FRI В 10:15 утра каждый понедельник, вторник, среду, четверг и пятницу
0 15 10 15 * ? В 10:15 утра 15-го числа каждого месяца
0 15 10 L * ? В 10:15 утра в последний день каждого месяца
0 15 10 L-2 * ? В 10:15 утра в предпоследний день каждого месяца
0 15 10 ? * 6L В 10:15 утра в последнюю пятницу каждого месяца
0 15 10 ? * 6L В 10:15 утра в последнюю пятницу каждого месяца
0 15 10 ? * 6L 2002-2005 В 10:15 утра в последнюю пятницу каждого месяца в 2002, 2003, 2004 и 2005 годах
0 15 10 ? * 6#3 В 10:15 утра в третью пятницу каждого месяца
0 0 12 1/5 * ? В 12:00 (в полдень) каждые 5 дней в течение месяца, начиная с первого дня месяца
0 11 11 11 11 ? Каждый год 11 ноября в 11:11