Конструктор виразів cron
Складіть вираз cron за полями, прочитайте його простими словами, перегляньте наступні запуски в часовому поясі й перетворіть на формат systemd, Quartz чи AWS.
Простими словами
Задано і день місяця, і день тижня: класичний cron запускається, коли збігається ХОЧА Б ОДНЕ з них (а не обидва).
Конструктор
| Поле | Режим | Значення |
|---|---|---|
| Секунда0–59 | ||
| Хвилина0–59 | ||
| Година0–23 | ||
| День місяця1–31, L | ||
| Місяць1–12 або JAN–DEC | ||
| День тижня0–7 (0 і 7 = неділя) або SUN–SAT |
Наступні запуски
Інші формати
- рядок crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Як скласти вираз cron
- Введіть або вставте вираз у поле Вираз cron чи виберіть його серед Шаблони. Макроси на кшталт
@dailyабо@weeklyтакож приймаються. - Або скористайтеся Конструктор: для кожного поля виберіть Режим (Кожне, Кожні N, Окремі значення, Діапазон чи Власний) і заповніть Значення. Вираз оновлюється в міру ваших дій, а редагування виразу оновлює конструктор.
- Позначте Додати поле секунд (6 полів), якщо ваш планувальник підтримує секунди.
- Прочитайте розклад у розділі Простими словами (українською, якщо це підтримує бібліотека опису, інакше англійською), а потім перегляньте список Наступні запуски. Виберіть Часовий пояс сервера, що виконує завдання, і в полі Скільки – кількість запусків у списку.
- Скопіюйте вираз кнопкою Копіювати або скористайтеся одним з Інші формати.
Помилки пояснюються окремо для кожного поля, наприклад «Хвилина: 61 виходить за межі діапазону (0–59)», тож ви точно знаєте, що виправляти.
П’ять полів cron
Стандартний рядок cron (Vixie) має п’ять полів, а далі йде команда:
| Поле | Дозволені значення |
|---|---|
| Хвилина | 0–59 |
| Година | 0–23 |
| День місяця | 1–31 |
| Місяць | 1–12 або JAN–DEC |
| День тижня | 0–7 (0 і 7 – неділя) або SUN–SAT |
Кожне поле приймає * (кожне значення), список 1,15, діапазон 9-17, крок */15 (кожні 15 одиниць) або діапазон із кроком 0-30/10. Тож */15 9-17 * * 1-5 означає кожні 15 хвилин з 9:00 до 17:45, з понеділка по п’ятницю.
Одне правило дивує багатьох: коли обмежено і День місяця, і День тижня, класичний cron запускається, коли збігається будь-яке з них. 0 0 13 * 5 виконується кожного 13-го числа і щоп’ятниці, а не лише в п’ятницю, 13-го. У такому випадку інструмент показує попередження.
Наступні запуски та часові пояси
Cron користується годинником машини або параметром CRON_TZ/TZ у crontab. Список Наступні запуски обчислюється для вибраного вами часового поясу, зокрема з урахуванням переходу на літній і зимовий час: під час весняного переведення годинника завдання, призначене на 2:30, може бути пропущене, а восени воно може виконатися один чи два рази залежно від реалізації. Для завдань, що мають виконуватися рівно один раз, вибирайте час поза проміжком 1:00–3:00 або використовуйте UTC. Дати наступних запусків відображаються за правилами української локалі.
Vixie cron, таймери systemd, Quartz і AWS
- Таймери systemd використовують
OnCalendar=з іншим синтаксисом:Mon..Fri *-*-* 09..17:00/15:00. Умови дня тижня й дати поєднуються через І, а не АБО, тому деякі вирази cron не мають точного відповідника. - Quartz і Spring ставлять поле секунд першим і можуть додавати поле року. Одне з двох полів дня має бути
?, а Quartz нумерує дні тижня від 1 до 7, починаючи з неділі, на відміну від cron (0–6). Інструмент записує дні тижня назвами (MON-FRI), щоб уникнути цієї пастки. - AWS EventBridge використовує
cron(хвилини години день місяць день-тижня рік): шість полів, без секунд, із?в одному з полів дня та роком наприкінці.
Стандартний cron не має поля секунд. Шестипольну форму із секундами підтримують багато бібліотек (node-cron, Spring, Quartz), але не системний crontab.
Поширені запитання
Як запускати завдання кожні 5 хвилин?
Використайте */5 * * * *. Завдання виконуватиметься на 0, 5, 10… хвилині кожної години.
Як запускати завдання в останній день місяця?
Багато планувальників приймають L у полі дня місяця: 0 18 L * *. У звичайному Vixie cron запускайте завдання щодня 28–31 числа й перевіряйте в скрипті, чи завтра 1-ше число.
Що робить @reboot?
Він запускає команду один раз, коли стартує демон cron. Розкладу в нього немає, тому інструмент не може показати часи запусків.
Чому моє завдання не запускається у вказаний час?
Перевірте часовий пояс сервера, crontab користувача й /etc/crontab (у ньому є додаткове поле користувача) та змінну PATH: cron стартує з мінімальним середовищем.
Неділя – це 0 чи 7?
І те, й інше. У полі дня тижня 0 і 7 означають неділю, 1 – понеділок, а 6 – суботу.
Схожі інструменти
- Конвертер Unix-часу Перетворюйте Unix-мітки часу в секундах чи мілісекундах на зрозумілі дати в місцевому часі, UTC та ISO 8601 і повертайте будь-яку дату в epoch-час.
- Конвертер часових поясів Перетворіть дату й час з одного часового поясу в інші з урахуванням літнього часу. Працює у браузері: введіть місто чи пояс IANA, наприклад Europe/Kyiv.
- Калькулятор chmod Переводьте права доступу Unix між прапорцями, вісімковим (755) і символьним (rwxr-xr-x) записом, зі setuid, setgid, sticky-бітом і готовими командами chmod.