Синтаксис виразів cron
Вираз cron — це п'ять полів, які описують, коли щось має запуститися. Кожне поле говорить, які значення його одиниці допустимі, і завдання запускається в кожну хвилину, де всі п'ять узгоджуються. Це весь модель: немає тривалості, немає «кожні 90 хвилин» і ніде не зберігається стан наступного запуску.
Поля читаються зліва направо як хвилина, година, день місяця, місяць, день тижня. Приклади внизу — це ті, за якими люди насправді сягають, і кожен з них аналізується власним cron парсером цього сайту перед тим, як будується ця сторінка.
Останній розділ список синтаксис, який виглядає як cron, але тут не приймається: розширення Quartz та Jenkins та шістьпольова форма з секундами. Варто їх знати, тому що скопійований вираз, який використовує один з них, просто не спрацює.
П'ять полів
7Рядок cron складається з п'яти полів, розділених пробілами, потім команди. Кожне поле має бути присутнім; немає способу пропустити будь-яке.
| Вираз | Діапазон | Значення |
|---|---|---|
| * * * * * | min hod dom mes dow | П'ять полів у порядку: хвилина, година, день місяця, місяць, день тижняП'ять зірочок означає кожну хвилину кожного дня — найслабший можливий вираз. |
| minute | 0-59 | Перше поле |
| hour | 0-23 | Друге поле, у 24-годинному форматі |
| day of month | 1-31 | Третє полеДень, який не існує в даному місяці, просто пропускається — 31-е запускається сім разів на рік, а не дванадцять. |
| month | 1-12 | Четверте поле |
| day of week | 0-7 | П'яте поле, неділя першоюНеділю означають 0 і 7 — тому діапазон йде до семи, а не до шести. |
| 0 5 13 * 5 | Коли обидва поля дні обмежені, cron запускається на будь-якому з них — не на обохЦе запускається 13-го та на кожну п'ятницю, тому це не «п'ятниця, 13». Це єдине правило cron, яке вражає всіх. |
Оператори
10Одні й ті ж чотири оператори працюють у кожному полі; змінюються лише числа, які вони приймають.
| Вираз | Діапазон | Значення |
|---|---|---|
| * | Кожне значення, яке дозволяє поле | |
| 1,15,30 | Список окремих значень | |
| 9-17 | Включний діапазон | |
| */15 | Кожне n-е значення по всьому полю*/15 у полі хвилин означає :00, :15, :30 та :45 — це рахує від дна діапазону, а не від тепер. | |
| 9-17/2 | Кожне n-е значення всередині діапазону | |
| 5/10 | Кожне n-е значення від стартової точки до кінця поля | |
| 0,30 9-17 * * 1-5 | Оператори вільно комбінуються у будь-якому поліНа половину години, між дев'ятою та п'ятою, з понеділка по п'ятницю. | |
| JAN-DEC | 1-12 | Назви місяців, три букви, без урахування регістру |
| SUN-SAT | 0-6 | Назви днів, три букви, без урахування регістру |
| 7 | 0 | Неділя, написана іншим способом |
Скорочені макроси
7Сім назв, які означають цілий вираз. Вони зручність формату crontab, а не граматика полів, тому планувальник, який читає рядки cron, не обов'язково їх приймає.
| Вираз | Діапазон | Значення |
|---|---|---|
| @hourly | 0 * * * * | На вершині кожної години |
| @daily | 0 0 * * * | Один раз на день опівночі |
| @midnight | 0 0 * * * | Те саме, що @daily |
| @weekly | 0 0 * * 0 | Один раз на тиждень, неділя опівночі |
| @monthly | 0 0 1 * * | Першого числа місяця опівночі |
| @yearly | 0 0 1 1 * | Першого січня опівночі |
| @annually | 0 0 1 1 * | Те саме, що @yearly |
Готові приклади
14Коли вираз перестає мати сенс, читайте його справа наліво: найбільш загальне поле справа, і воно вирішує, на які дні навіть закріплюються дрібніші.
| Вираз | Діапазон | Значення |
|---|---|---|
| * * * * * | Кожну хвилину | |
| */5 * * * * | Кожні п'ять хвилин | |
| 0 * * * * | Кожну годину, на її вершину | |
| 0,30 * * * * | Кожні півгодини | |
| 0 3 * * * | Кожен день о 03:00 | |
| 0 9,17 * * * | Двічі на день, о 09:00 та 17:00 | |
| */15 9-17 * * 1-5 | Кожні п'ятнадцять хвилин під час робочих годин у робочі дні | |
| 0 8 * * 1-5 | У робочі дні о 08:00 | |
| 0 10 * * 6,0 | У суботу та неділю о 10:00 | |
| 30 7 * * MON | У понеділок о 07:30 | |
| 0 0 1 * * | Опівночі першого дня кожного місяця | |
| 0 0 28-31 * * | Кожний день в останній частині місяцяСтандартний cron не має поняття «останній день місяця». Це запускається до чотирьох разів; звичайна виправка — це скрипт, який перевіряє дату та рано виходить. | |
| 0 0 1 1,4,7,10 * | Опівночі першого дня кожного кварталу | |
| 0 0 1 1 * | Один раз на рік, на початку 1 січня |
Розширення, які цей сайт не приймає
6Quartz, Jenkins та деякі хмарні планувальники додають їх. Вони перелічені, щоб ви їх впізнали в чужому crontab — парсер на цьому сайті відхиляє кожний з них, як і cron, що поставляється з Linux.
| Вираз | Діапазон | Значення |
|---|---|---|
| ? | «Немає конкретного значення» у полі дня, що вже обмежує іншу | |
| L | Останній день місяця або останній заданий день тижня | |
| 15W | Робочий день, найближчий до 15-го | |
| FRI#3 | Третя п'ятниця місяця | |
| */30 * * * * * | Шосте поле для секунд, спередуШість полів, а не п'ять. Цю форму використовують Quartz та декілька бібліотек; файл crontab — ні. | |
| @reboot | Запуститися один раз при запуску машиниРеальний у crontab, але це не розклад — немає наступного запуску для обчислення, тому парсер тут його відхиляє. |