Побудувати cron-вираз
- Панель керування
- Документація
- API
Навіщо візуальний cron builder?
Вираз cron складається з п'яти полів і все одно залишається одним з найбільших генераторів помилок у виробництві. Скільки разів розробник писав 0 0 * * 1, думаючи "кожного понеділка", не пам'ятаючи, що 1 може означати неділю залежно від реалізації? Скільки разів плутали */15 з 15? Cron builder відповідає на цю потребу: візуально складати crontab expression, з типових налаштувань або окремих полів, і отримувати фінальний вираз, готовий для вставки у crontab Linux, Kubernetes CronJob або планувальник GitHub Actions.
Інструмент є протилежністю нашого cron decoder: там де конвертер приймає вираз і розгортає наступні виконання, builder приймає людські вибори і виробляє відповідний cron-вираз.
Як це працює
Графічний інтерфейс пропонує два додаткові режими складання:
- Режим попередніх налаштувань: селектор частоти (every minute, every hour, every day, every week, every month, every year, custom), який миттєво генерує дійсний cron expression.
- Режим полів: п'ять редагованих полів (хвилина, година, день місяця, місяць, день тижня), де ви вільно вводите
*, ціле число, діапазон1-5, список1,15,30або крок*/15.
Builder оновлює вираз у реальному часі та відображає стислий людський прочит ("щодня о 3-й ранку", "кожні 15 хвилин"), який служить запобіжником: якщо фраза не відповідає вашому наміру, вираз, ймовірно, неправильний.
П'ять полів cron, зрозуміло
Стандартний вираз cron містить п'ять полів, розділених пробілами:
хвилина година день-місяця місяць день-тижня
* * * * *
- хвилина (від 0 до 59);
- година (від 0 до 23);
- день місяця (від 1 до 31);
- місяць (від 1 до 12 або абревіатури Jan, Feb тощо);
- день тижня (від 0 до 7, 0 і 7 обидва означають неділю у більшості реалізацій).
Кожне поле приймає кілька форм: * (всі значення), точне ціле число (5), список (1,3,5), діапазон (9-17), крок (*/15 кожні 15 значень), або комбінацію (0-30/5).
Типові випадки використання
- Розробник, що вивчає cron: візуалізувати взаємодію кожного поля, без ризику неправильного виразу у виробництві.
- Sysadmin у поспіху: генерувати за кілька секунд розклад для cron Linux, Kubernetes CronJob або завдання Ansible без повторного читання man page.
- Розробник без досвіду POSIX: виробляти дійсний crontab expression для Symfony Scheduler, Laravel Scheduler або node-cron без знання історичного синтаксису.
- DevOps на перевірці: швидко прототипувати вираз для пропозиції у pull request, потім перевіряти з cron decoder.
- Міграція legacy: переформулювати старий cron-вираз через builder, щоб переконатися у семантиці перед його розгортанням деінде.
Типові попередні налаштування
Вибір попереднього налаштування перезаписує окремі поля та виробляє відповідний вираз:
- Щохвилини:
* * * * *. Уникайте у виробництві, якщо немає особливої потреби. - Щогодини:
0 * * * *. На початку кожної години. - Щодня:
0 0 * * *. О опівночі. - Щотижня:
0 0 * * 0. Щонеділі о опівночі. - Щомісяця:
0 0 1 * *. 1-го числа місяця о опівночі. - Щороку:
0 0 1 1 *. 1 січня о опівночі.
Поширені патерни, які варто знати
| Вираз | Людський прочит |
|---|---|
0 0 * * * |
Щодня о опівночі |
*/15 * * * * |
Кожні 15 хвилин |
0 9 * * 1-5 |
Щодня у будні о 9-й |
0 0 1 * * |
1-го числа місяця о опівночі |
0 0 * * 0 |
Щонеділі о опівночі |
*/5 9-17 * * 1-5 |
Кожні 5 хвилин у робочі години |
0 3 * * * |
Щодня о 3-й ранку |
30 2 1,15 * * |
1-го і 15-го числа місяця о 2:30 |
Складання спеціального виразу
Для більш специфічних випадків, помічник надає п'ять полів для вільного введення. Кілька корисних прикладів:
- Щодня о 3-й ранку: хвилина=
0, година=3, інші поля*. - Кожні 15 хвилин: хвилина=
*/15, інші поля*. - З понеділка по п'ятницю о 9-й: хвилина=
0, година=9, день-тижня=1-5. - Кожного 1-го і 15-го числа місяця опівдні: хвилина=
0, година=12, день-місяця=1,15. - Кожні 5 хвилин між 9-ю і 17-ю: хвилина=
*/5, година=9-17.
Як користуватися cron builder
- Виберіть попереднє налаштування (every minute, every hour, every day, every week, every month, every year), що відповідає основі вашої потреби.
- Уточніть при необхідності, редагуючи безпосередньо п'ять полів (хвилина, година, день місяця, місяць, день тижня).
- Прочитайте людський прочит, згенерований інструментом, для підтвердження наміру.
- Скопіюйте вироблений cron expression за допомогою кнопки копіювання.
- Перевірте розклад за допомогою нашого cron decoder, який обчислює наступні реальні дати виконання.
- Вставте вираз у ваш crontab Linux, Kubernetes CronJob, Symfony Scheduler або робочий процес GitHub Actions.
Класичні пастки
- Комбінація дня місяця та дня тижня: якщо обидва не є
*, поведінка відрізняється залежно від реалізацій. Linux/Vixie cron застосовує АБО; сучасні бібліотеки іноді мають іншу поведінку. Уникайте. - День 1 = понеділок чи неділя?: залежно від країни та конвенції. Більшість Unix cron вважають неділю=0 і суботу=6. Перевіряйте свій планувальник.
- Часовий пояс: Unix cron за замовчуванням використовує часовий пояс сервера. Прикладні планувальники (Symfony Scheduler, Quartz) часто дозволяють встановити окремий часовий пояс.
- Відсутня хвилина:
* * * * *виконує завдання щохвилини, що рідко є бажаним. Подумайте про встановлення точного тригера (0) для погодинних завдань.
Людський прочит і виведення
На додаток до cron expression, інструмент пропонує стислий людський прочит ("щодня о опівночі", "кожні 5 хвилин"). Це запобіжник: якщо фраза не відповідає вашому наміру, вираз, ймовірно, неправильний. Для складного випадку потім використовуйте наш
Часті запитання
Чи можна редагувати вираз вручну після використання інтерфейсу?
Так. Builder не є ексклюзивним режимом: п'ять полів залишаються редагованими у будь-який момент. Можна почати з попереднього налаштування, потім вручну відрегулювати поле для отримання crontab expression на замовлення. Людський прочит перераховується негайно.
Чи підтримує інструмент формат Quartz із 6 полями (з секундами)?
Ні: формат із 5 полів є Unix стандартом і спільною базою для більшості планувальників (Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler). Quartz (Java) приймає додаткове поле для секунд та специфічні символи (?, L, W, #), але ця потреба залишається рідкою.
Як обробляється часовий пояс?
Builder виробляє нейтральний cron-вираз: саме рушій, що виконує завдання, застосовує свій часовий пояс. На crontab Linux - це TZ сервера. На GitHub Actions - UTC. На Kubernetes 1.27+ можна встановити spec.timeZone у маніфесті. Symfony Scheduler та Quartz надають окремий часовий пояс для кожного завдання.
Як перевірити вираз без його виконання у виробництві?
Використовуйте наш cron decoder. Він обчислює N наступних виконань з поточного моменту, не запускаючи жодного завдання. Це найкращий спосіб підтвердити, що cron expression спрацьовує вчасно перед розгортанням.
Який зв'язок з Symfony Scheduler?
Symfony Scheduler приймає cron-вирази з 5 полів через Schedule::cron('0 3 * * *', ...). Вираз, вироблений builder, може бути вставлений таким як є. Те саме для Laravel Scheduler (->cron('...')), node-cron, Hangfire та Airflow.
Чи потрібно префіксувати команду у системному crontab?
Так, у /etc/crontab потрібен користувач (0 3 * * * www-data /usr/bin/php ...), тоді як crontab -e для користувача його опускає. Сам вираз залишається ідентичним.
Приклад запиту
curl -X POST https://cdrn.fr/api/v1/tools/cron-builder/execute \
-H "Content-Type: application/json" \
-d '{"preset":"none","minute":"*","hour":"*","day_of_month":"*","month":"*","day_of_week":"*"}'
Схема вхідних даних
| Поле | Тип | Обов'язкове | За замовчуванням |
|---|---|---|---|
preset |
choice (none, every_minute, hourly, daily, weekly, monthly, yearly) | – | none |
minute |
string | – | * |
hour |
string | – | * |
day_of_month |
string | – | * |
month |
string | – | * |
day_of_week |
string | – | * |
Точки доступу
GET https://cdrn.fr/api/v1/tools- перелічує всі доступні інструментиGET https://cdrn.fr/api/v1/tools/cron-builder- отримує схему цього інструментуPOST https://cdrn.fr/api/v1/tools/cron-builder/execute- виконує цей інструмент з JSON-payload