предисловие
Из-за потребностей в разработке, поэтому много исследовательского выражения CRON, а содержимое обобщено следующим образом:
Что такое крон?
Во-первых, прежде чем понять выражения cron, давайте поговорим о задачах синхронизации crontab; при ежедневной разработке или эксплуатации и обслуживании мы часто сталкиваемся с некоторыми задачами или требованиями, которые выполняются периодически, например, выполнять скрипт каждый период времени и выполнять его каждый понедельник. команда или действие. И linux предоставил нам удобный способ — задачи синхронизации crontab; crontab — это настраиваемый таймер, мы можем использовать команду crontab для выполнения указанных системных команд или сценариев оболочки через фиксированные интервалы времени. Запись этого временного интервала аналогична выражению cron, которое мы обычно используем. Функция заключается в периодическом выполнении некоторых операций с использованием символов или команд для установки времени.
Мы можем думать о выражении cron как о строке, разделенной 5 или 6 строковыми пробелами. 5 или 6 пробелов делят строку на 6 или 7 полей, каждое из которых имеет разное значение. По умолчанию слева направо: "秒 分 小时 日 月 星期几 年份".
cron-контент
| площадь | поле | имея в виду | диапазон или подстановочный знак | Требуется ли |
|---|---|---|---|---|
| Второй | Seconds | Второй |
0-59или,-*/
|
да |
| Минута | Minutes | минута |
0-59или,-*/
|
да |
| Время | Hours | Час |
0-23или,-*/
|
да |
| день | Day-of-Month | Дата |
1-31или,-*?/LW
|
да |
| Луна | Month | месяц |
1-12(илиJAN-DEC)или,- * /
|
да |
| Неделю | Day-of-Week | день недели |
1-7(илиSUN,MON,TUE,WED,THU,FRI,SAT)или, - * ? / L #
|
да |
| год | Year | годы |
1970-2099или- * /
|
нет |
Значение специальных символов:
-
,:значение перечисления. Если значение в месяце1,3, это означает, что события инициируются как в январе, так и в марте. -
*: означает соответствие доменулюбое значение, например поле часа*, что означает, что событие запускается каждый час -
?:Выражатьзначение не указано, используется для сравнения полей даты и недели互斥. Обычно одно из указанных значений в полях даты и недели, другое с?Указывает, что значение не указано. Личное понимание заключается в том, чтобы игнорировать значение этого поля и выполнять непосредственно в соответствии со значением другого поля. Например: дата2, то неделя должна быть?; -
-:Выражатьдиапазон, непрерывный интервал запуска. Например: когда значение равно9-12, это означает, что событие срабатывает каждый час с 9 до 12 часов. -
/:ВыражатьТриггерное событие интервала времени (время начала/интервал времени). Например: в минутном значении0/15, это означает запуск с 0 баллов и запуск события каждые 15 минут. -
#:ВыражатьN-я неделя месяца x(x#n), только с полем недели. Например: неделя:6#3, что представляет собой третью пятницу месяца. -
L:ВыражатьПоследний (последний день или последний день недели); отображается только в полях День и Неделя. При использовании в дне это означает последний день месяца, а при использовании в неделе это означает последнюю неделю X месяца. Например, если значение поля недели равно 5L, это означает четверг последней недели месяца. В использовании'L', не указывать список','или диапазон'-', иначе это может привести к неожиданным результатам. -
W: Используется только в поле дня, указывая ближайший рабочий день (с понедельника по пятницу) к данному дню месяца.Такие как:
"4W"Указывает рабочий день, ближайший к 4-му (месяца) триггерное событие; (1) Когда 4-й рабочий день, это означает, что он срабатывает в тот же день; когда 4-я в субботу, это означает, что он срабатывает на 3-м (пятницу); (2) Когда 4-е воскресенье, это означает, что он срабатывает на 5-м (понедельник); Другой пример:"1W"Указывает, что ближайший день недели к 1-му запускает событие, однакоРабочий день считается только за текущий месяц. Если 1-е число месяца - суббота, то "1W"Указывает, что событие срабатывает 3-го числа (понедельник) текущего месяца. Даже если последний день предыдущего месяца является рабочим днем, событие не сработает. -
LW:‘L’а также'W'Может быть объединен вместе для использования в дневном поле. Указывает, что событие запускается в последний рабочий день текущего месяца.
Пример использования
// 从左往右: 秒 分 时 日 月 星期 年
"30 * * * * ? *" // 表示半分钟触发一次事件
"0 0 12 ? * WED" // 表示每个星期三中午12点
"0 0,15 8-11 * * 2" // 每周一上午8点至11点(8,9,10,11)的第0和第15分钟都触发一次事件
"0 0/5 15 * * ?" // 在每天下午3点到下午3:55期间的每5分钟触发
"0 0 12 L * ?" // 每月最后一日的中午12:00触发事件
"0 0 12 4W * ?" // 每月距离4号最近的工作日的中午12:00触发事件
"0 0 12 LW * ?" // 每月最后一个工作日的中午12:00触发事件
"0 0 12 ? * 6#3" // 每月第3个星期五中午12:00触发事件
"0 11 11 11 11 ? 2019" // 2019年的11月11号 11点11分触发(光棍节)