Зрозумійте розклад cron перед його виконанням
Вирази cron — це компактні рядки розкладу, які використовуються серверами, CI-завданнями, платформами автоматизації та сценаріями обслуговування. Вони потужні, але невелика опечатка може змінити завдання з щоденного на виконуване щохвилини або з робочих днів на вихідні.
Цей парсер пояснює Unix-вираз cron з п'яти полів простими словами, розбиває кожне поле та показує майбутні часи запуску з урахуванням часової зони, яку ви оберете у інструменті.
Підтримуваний діалект cron
Парсер v1 підтримує стандартний Unix cron з п'ятьма полями:
minute hour day-of-month month day-of-week - Значення хвилин від
0to59. - Значення годин від
0to23. - Значення дня місяця від
1to31. - Значення місяця від
1to12, включно з назвами, такими якJANandDEC. - Значення дня тижня від
0to7, включно з назвами, такими якMONandFRI. Обидва0and7означають неділю.
Підтримуються підстановки, списки через кому, діапазони та кроки, наприклад */15 or 9-17/2.
Що спеціально не підтримується
Діалекти cron не універсальні. Quartz, systemd timers, cloud schedulers, Kubernetes, GitHub Actions і хостинг-платформи можуть додавати власні поля або спеціальні оператори.
- Поля секунд і поля року не аналізуються як Unix cron.
- Оператори Quartz, такі як
?,L,W, та#позначаються як непідтримувані. - Макроси, такі як
@dailyand@rebootне розгортаються. - Текст команди після розкладу не розглядається як частина виразу.
Використовуйте цю сторінку як інспектор для розкладів у стилі Unix. Перш ніж змінювати автоматизацію у продакшені, перевірте точний планувальник, який виконуватиме завдання.
Поведінка часової зони та переходів на літній/зимовий час
Вираз cron сам по собі не містить інформації про часову зону. Той самий вираз може виконуватися в різні моменти залежно від того, чи сервер використовує UTC, локальну системну часову зону або специфічну для планувальника настройку часової зони.
- Попередній перегляд показує часи запуску в обраній IANA часовій зоні та в UTC.
- Переходи вперед (spring-forward) можуть пропускати локальні моменти часу, які не існують.
- Переходи назад можуть повторювати локальний показник часу; поведінка планувальника може відрізнятися.
- Якщо й поле дня місяця, і поле дня тижня обмежені, Unix cron зазвичай використовує семантику OR.
Для критичних завдань розглядайте попередній перегляд як допоміжний інструмент планування і підтверджуйте поведінку безпосередньо в планувальнику.
Часті запитання
Чи підтримується тут Quartz cron?
Ні. Парсер підтримує лише Unix cron з п'яти полів. Quartz-стиль із полями секунд, полями року та операторами, такими як ?, L, W, та # показуються як непідтримувані.
Яку часову зону використовує вираз cron?
Вирази cron не несуть інформації про часову зону. Попередній перегляд використовує часову зону, обрану в інструменті, але ваш сервер або планувальник може використовувати іншу часову зону.
Чому можуть збігатися і день місяця, і день тижня?
У стандартній поведінці Unix cron, коли обидва поля обмежені, дата може відповідати, якщо відповідає будь-яке з полів. Наприклад, 0 0 1 * MON може виконуватися в перший день місяця та по понеділках.
Чи можу я вставити частину команди з crontab?
Вставляйте лише п'ять полів розкладу. Інструмент є парсером розкладів, а не повним парсером crontab, тому текст команди після розкладу не інтерпретується.