По возможности избегайте регулярных выражений. Пример AWK:
index($2, "L") == 1
Этот синтаксис 30 15 */15 * *
правильный, но он не делает то же самое с этим 30 15 1,15 * *
.
Последний будет выполнять команду в 1st
и 15th
месяца, так как он имеет фиксированные значения, разделенные запятыми для поля «день месяца».
/
определяет шаги, это означает, что */15
будет выполняться каждые 15
дней, начиная с 1
, это означает :1st
,16th
(для всех месяцев ), а также31th
(для любой месяц, имеющий 31 день ).
Как сказано в man crontab(5)
, значения шага можно использовать вместе с диапазонами. Поэтому, если вы хотите получить тот же результат, используя синтаксис /
, вы можете сделать :30 15 1-15/14 * *
, что означает 30 15 1,15 * *
.
Другой пример, если вы хотите запускать каждые 15 дней, но 5-го и 20-го числа каждого месяца:5-20/15
. Конечно, для этого случая читабельнее будет написать 5,20
. Но объединение диапазона с шагами позволяет определить начало -конец выполнения с диапазоном.
Для дней 1, 3, 5, 7 и т. д. месяца:*/2
Для дней 2, 4, 6, 8 и т. д. месяца:2-30/2
Для минут(0-59
)и часов(0-23
)первым допустимым значением является 0
, поэтому:0 */2 * * *
означает 00:00
, 02:00
, 04:00
и т. д.