Роль cron у плануванні завдань та структура виразу
Планувальник завдань cron є стандартним інструментом у Unix-подібних операційних системах для автоматизації періодичних процесів. Завдання, що виконуються за розкладом, налаштовуються за допомогою спеціальних текстових рядків — виразів cron. Коректне налаштування цих виразів є критично важливим для розробників, які перевіряють конфігурації фонових завдань, системних адміністраторів та спеціалістів технічної підтримки, що аналізують проблеми у роботі запланованих процесів.
Стандартний формат виразу cron складається з 5 полів, розділених пробілами:
- Хвилина
- Година
- День місяця
- Місяць
- День тижня
Цей інструмент розбирає вираз на окремі компоненти та обчислює точний час майбутніх запусків. Процес аналізу відбувається локально: ваш вираз cron аналізується безпосередньо у вашому браузері, і нічого не надсилається на BroBroGo.
Підтримуваний синтаксис та правила обробки полів
Інструмент підтримує класичний 5-параметровий синтаксис cron та загальноприйняті символи для гнучкого налаштування періодичності:
- Символ зірочки (
*): Означає відсутність обмежень для поля. У розшифровці відображається як "Будь-який". - Діапазони (наприклад,
1-5): Визначають послідовний інтервал значень. - Кроки (наприклад,
*/15): Використовуються для визначення періодичності. Для таких конструкцій інструмент виводить текстове пояснення залежно від поля:- Для хвилин: "Кожні
{n}хв." - Для годин: "Кожні
{n}год." - Для днів місяця: "Кожні
{n}дн." - Для місяців: "Кожні
{n}міс." - Для днів тижня: "Кожні
{n}дн."
- Для хвилин: "Кожні
- Списки (наприклад,
1,15): Перелік конкретних значень через кому. - Текстові назви: Підтримуються трилітерні назви місяців (наприклад,
JAN) та днів тижня (наприклад,MON). - Ярлики швидкого доступу: Замість п'яти полів можна використовувати системні макроси
@yearly,@monthly,@weekly,@dailyта@hourly.
Приклад складного вхідного рядка для поля "Вираз cron": */15 9-17 * * MON-FRI.
Зверніть увагу, що цей інструмент не підтримує розширення з шостим полем секунд, а також специфічні для Quartz розширення, такі як символи L, W або #.
Взаємодія полів та логічні винятки
При написанні виразів cron важливо враховувати специфіку взаємодії між днями місяця та днями тижня, а також календарні обмеження.
Правило об'єднання днів місяця та днів тижня
Коли у виразі одночасно обмежені (тобто не дорівнюють *) і день місяця, і день тижня, планувальник застосовує логічне АБО. Це означає, що для запуску завдання достатньо збігу за будь-яким із цих двох параметрів. Завдання виконається і в зазначений день місяця, і в зазначений день тижня.
Неможливі розклади
Якщо вираз є синтаксично правильним, але задає умови, які фізично не можуть бути виконані, інструмент виведе повідомлення: "Цей розклад ніколи не виконається — перевірте, чи існує вказаний день місяця в усіх вибраних місяцях.".
Типовим прикладом такої помилки є встановлення дня місяця 31 для періоду, що включає місяці з меншою кількістю днів (наприклад, квітень, червень, вересень або листопад). Оскільки 31-ше число відсутнє в кожному з цих місяців, такий розклад вважається неможливим для виконання.
Обчислення майбутніх запусків та часові пояси
Окрім текстового розбору полів, інструмент розраховує точний графік найближчих спрацьовувань. Користувач може налаштувати параметр "Кількість" у діапазоні від 1 до 20, щоб змінити число відображуваних результатів.
Обчислення часу запусків відбувається з урахуванням таких особливостей:
- Усі результати відображаються у локальному часовому поясі вашого браузера. Поруч із результатами виводиться примітка "(ваш локальний час)".
- Сам по собі стандартний вираз cron не містить інформації про часовий пояс. На практиці виконання завдання залежить від системного часу сервера, на якому запущено планувальник. Тому розрахований локальний час є орієнтиром для перевірки логіки інтервалів, а не гарантованим часом виконання на віддаленому сервері.
Повідомлення інтерфейсу та помилки
Під час роботи з інструментом ви можете побачити такі стани та повідомлення:
- Введіть вираз cron, щоб розібрати його. — початковий стан, коли поле введення порожнє.
- Некоректний вираз cron. — відображається, якщо введений рядок містить синтаксичні помилки.
- Цей розклад ніколи не виконається — перевірте, чи існує вказаний день місяця в усіх вибраних місяцях. — виникає при логічно неможливих комбінаціях днів та місяців.
Часті запитання (FAQ)
Який синтаксис cron підтримує цей інструмент?
Стандартний cron з 5 полями — хвилина, година, день місяця, місяць та день тижня. Підтримуються діапазони (1-5), кроки (*/15), списки (1,15), назви місяців і днів тижня (JAN, MON), а також ярлики @yearly, @monthly, @weekly, @daily, @hourly. Важливе правило: якщо обмежено і день місяця, і день тижня (не *), то для запуску достатньо збігу за будь-яким із цих параметрів.
У якому часовому поясі відображається час наступних запусків?
Локальний часовий пояс вашого браузера — той самий, який використовує ваша операційна система. Стандартний cron не містить інформації про часовий пояс; це визначає планувальник завдань, на якому він працює, тому сприймайте цей час як орієнтир для вашого локального часу, а не обов'язково сервера.
Чому вказано, що цей розклад ніколи не виконається?
Зазвичай це пов'язано з днем місяця, якого немає в деяких із вибраних місяців — наприклад, 31-ше число для квітня, червня, вересня чи листопада. Виберіть день, який існує в усіх вказаних місяцях, або розділіть розклад на окремі вирази.