Переходите з UptimeRobot? Імпортуйте монітори одним кліком за ключем API лише для читання.Почати безкоштовно →
  1. Головна
  2. Безкоштовні інструменти
  3. Конструктор cron-виразів

Конструктор cron-виразів

Складіть cron-вираз із готових шаблонів або полів, прочитайте його звичайною мовою й подивіться п’ять найближчих запусків. Безкоштовно, без реєстрації.

Щохвилини

Найближчі 5 запусків

    Рядок crontab із heartbeat для цього розкладу:

    Дізнайтеся, коли це завдання перестане запускатисяСтворіть для завдання heartbeat-адресу в Tenium і задайте період та запас часу, що відповідають цьому розкладу. Пропустили пінг — отримали сповіщення.

    Почати безкоштовно

    Читаємо п’ять полів

    Стандартний запис у crontab складається з п’яти полів у незмінному порядку: хвилина (0-59), година (0-23), день місяця (1-31), місяць (1-12) і день тижня (0-6, де і 0, і 7 означають неділю). Зірочка збігається з будь-яким значенням, кома перелічує значення, дефіс задає діапазон, а коса риска — крок. Конструктор розуміє також назви місяців і днів тижня, як-от Mon-Fri та Jan.

    Візьмімо */15 9-17 * * 1-5. Поле хвилин спрацьовує о 0, 15, 30 і 45; поле годин дозволяє години від 9 до 17; останнє поле обмежує розклад днями від понеділка до п’ятниці. Це чотири запуски на годину протягом дев’яти годин, тобто 36 запусків на день, і останній з них о 17:45, а не о 18:00, адже діапазон годин закінчується на 17. Хто хоче «до 18:00», зазвичай потребує 9-17 плюс окремий запис 0 18.

    Помилки, які помітить попередній перегляд

    Список наступних п’яти запусків — найшвидший спосіб знайти вираз, що означає не те, що ви мали на увазі:

    • */7 у полі хвилин спрацьовує о 0, 7, 14 і далі до 56, а потім знову о 0, тож на межі години виникає розрив у 4 хвилини. Кроки, що не ділять 60 націло, ніколи не дають рівних інтервалів.
    • 0 9 1 * 1 не означає «перший понеділок». Коли обмежено і день місяця, і день тижня, стандартний cron запускає завдання за будь-яким збігом, тож воно спрацює 1-го числа і в кожен понеділок.
    • Крок на окремому числі, наприклад 5/15, починається з 5 і рахує по 15 (5, 20, 35, 50). Деякі реалізації cron його відхиляють, тому для переносимості пишіть 5-59/15.
    • 0 0 29 2 * показує «Немає запусків протягом наступного року», якщо в найближчі дванадцять місяців немає 29 лютого, і це правильна відповідь.
    • Планувальники Quartz і Spring використовують шість або сім полів із секундами та символами на кшталт ? і L. Цей конструктор призначений для п’ятипольного формату Unix і назве такі вирази некоректними.

    Часові пояси та літній час

    Cron обчислює час за системним часовим поясом машини, а попередній перегляд показує наступні запуски у поясі вашого браузера, тому вони можуть не збігатися. Завдання 0 3 * * * на сервері в UTC спрацює о 05:00 за Таллінном узимку й о 06:00 влітку. Якщо сервер працює за місцевим часом, завдання в годину, яку навесні перескакують (з 02:00 до 03:00), може бути пропущене чи зсунуте, а завдання в годину, що повторюється восени, — виконатися двічі, залежно від реалізації cron. Безпечна звичка: тримати сервери в UTC і не планувати важливі завдання на проміжок 01:00-04:00 за місцевим часом.

    Тиха поломка cron

    Коли завдання не запускається, cron нічого не повідомляє. Демон зупинився, сервер перебудували без crontab, через проблему з PATH команда падає, а вивід надсилається нікому, або знак відсотка лишили без екранування (у crontab символ % означає новий рядок, якщо не написати \%). Завдання просто перестає працювати, і першою ознакою стає відсутня резервна копія чи порожній звіт за кілька тижнів.

    Heartbeat закриває цю прогалину. Heartbeat-монітор у Tenium задається періодом і запасом часу в секундах, а не виразом cron, тож розклад треба перекласти: щоденне завдання о 03:00 стає періодом 86400 і запасом 7200, якщо воно може тривати до двох годин. Тижневе завдання — це 604800. Завдання лише у будні потребує обережності, бо між п’ятничним і понеділковим пінгом 72 години: або задайте період у 3 доби, або нехай другий рядок пінгує щодня. Рядок унизу інструмента додає виклик curl після команди через &&, тож завдання, що завершилося помилкою, пінга не надішле. Докладніше — у розділі моніторинг cron-завдань.

    Скільки heartbeat-моніторів ви отримуєте

    Heartbeat-монітори починаються зі Starter і рахуються за тарифом: 20 на Starter, 100 на Pro і 500 на Agency. Серверу з десятком запланованих завдань цілком вистачить тарифу Starter за $7 на місяць.

    Запитання про інструмент

    Що означає */15 9-17 * * 1-5?

    Кожні 15 хвилин (о :00, :15, :30, :45) протягом годин від 9 до 17, з понеділка по п’ятницю. Останній запуск щодня о 17:45. Це 36 запусків на будній день і жодного в суботу чи неділю.

    Чому завдання спрацювало не в той день, коли я вказав і день місяця, і день тижня?

    Стандартний cron поєднує два поля днів через АБО. Якщо обмежено обидва, завдання запускається, коли збігається будь-яке. Щоб отримати «перший понеділок», запускайте завдання в дні 1-7 і перевіряйте день тижня всередині скрипта.

    Чи використовує cron мій часовий пояс?

    Він використовує часовий пояс машини, на якій працює демон, — на хостингових серверах це часто UTC. Попередній перегляд показує наступні запуски в поясі вашого браузера, тож порівняйте його з виводом команди date на сервері.

    Чи розбирає інструмент вирази Quartz або AWS EventBridge?

    Ні. Він працює лише з класичним п’ятипольним форматом Unix. Quartz додає поле секунд і спеціальні символи, а AWS EventBridge використовує шість полів із роком і обов’язковим знаком питання.

    Як отримати сповіщення, коли cron-завдання не запустилося?

    Додайте після команди запит до heartbeat-адреси й задайте heartbeat-монітору період та запас часу. Якщо пінг не надійде до дедлайну, відкриється інцидент. Шаблон показує рядок curl, згенерований під попереднім переглядом.