Изграждане на cron израз

изгражда cron израз от визуални полета или preset (всяка минута, на час, ежедневно, седмично...)

Защо визуален cron builder?

Cron изразът съдържа пет полета и въпреки това остава един от най-генериращите грешки в производството. Колко пъти програмист е писал 0 0 * * 1, мислейки си „всеки Понеделник", без да помним, че 1 може да означава неделя в зависимост от реализациите? колко време ли сме объркали */15 и 15? Cron Builder отговаря на това необходимост: съставете визуално crontab израз от текущите предварително зададени настройки или на отделни полета и получете крайния израз, готов за поставяне в Linux crontab, Kubernetes CronJob или график за действия на GitHub.

Инструментът е обратното на нашия декодер на cron: където конверторът отвежда израз и извършва следващите екзекуции, строителят взема човешки избори и произвежда съответния cron израз.

Как работи

Графичният интерфейс предлага два допълващи се режима на композиция:

  • Предварително зададен режим: селектор на честота (всяка минута, всеки час, всеки ден, всяка седмица, всеки месец, всяка година, персонализирано), което незабавно генерира cron израз валиден.
  • Режим на полето: пет редактируеми полета (минута, час, ден от месеца, месец, ден от седмица), където свободно въвеждате *, цяло число, диапазон 1-5, списък 1,15,30 или стъпка */15.

Конструкторът актуализира израза в реално време и показва кратко човешко четене („всеки ден в 3 сутринта", "на всеки 15 минути"), което служи като предпазна мярка: ако изречението не отговаря на вашето намерение, изразът вероятно е грешен.

Петте cron полета, на разбираем език

Стандартният cron израз съдържа пет полета, разделени с интервали:

минута час ден-от-месец месец ден-от-седмица
* * * * *
  • минута (0 до 59);
  • час (0 до 23);
  • ден от месеца (1 до 31);
  • месец (1 до 12 или съкращения януари, февруари и т.н.);
  • ден от седмицата (от 0 до 7, 0 и 7 в повечето случаи са неделя реализации).

Всяко поле приема няколко форми: * (всички стойности), конкретно цяло число (5), списък (1,3,5), диапазон (9-17), стъпка (*/15 на всеки 15 стойности) или комбинация (0-30/5).

Типични случаи на употреба

  • Програмист, който учи cron: визуализирайте как взаимодейства всяко поле, без да рискувате фалшив израз в производството.
  • Системният администратор бърза: генерира за няколко секунди график за Linux cron, Kubernetes CronJob или Ansible задание, без да препрочитате man страницата.
  • Програмист без POSIX опит: създайте crontab израз валиден за Symfony Scheduler, Laravel Scheduler или node-cron без познаване на историческия синтаксис.
  • DevOps в преглед: бързо прототипирайте израз, който да предложите при изтегляне заявка, след което я потвърдете с декодера на cron.
  • Наследена миграция: преформулирайте исторически cron израз с помощта на създателя за да се гарантира семантиката, преди да се избута другаде.

Общи предварителни настройки

Избирането на предварително зададено презаписва отделните полета и създава съответния израз:

  • Всяка минута: * * * * *. Избягвайте в производството, освен ако не е необходимо конкретно.
  • На всеки час: 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:00 и 17:00: minute=*/5, време=9-17.

Как да използвате cron builder

  1. Изберете предварително зададена настройка (всяка минута, всеки час, всеки ден, всяка седмица, всеки месец, всяка година) което отговаря на основата на вашата нужда.
  2. Прецизирайте, ако е необходимо, като директно редактирате петте полета (минута, час, ден от месеца, месец, ден от седмицата).
  3. Прочетете човешкото изречение, генерирано от инструмента, за да потвърдите намерението.
  4. Копирайте cron израза, получен чрез бутона за копиране.
  5. Потвърдете графика с нашия декодер на cron, който изчислява следващи реални дати на изпълнение.
  6. Поставете израза във вашия Linux crontab, вашия Kubernetes CronJob, вашия Symfony Scheduler или вашия работен процес GitHub Actions.

Класически капани

  • Ден от месеца и ден от седмицата комбинирани: ако и двата не са *, поведението се различава между реализациите. Linux/Vixie cron прилага OR; на Съвременните библиотеки понякога се държат по различен начин. За избягване.
  • Ден 1 = понеделник или неделя?: в зависимост от държавата и конвенцията. Повечето cron Unix счита неделя=0 и събота=6. Проверете вашия плановик.
  • Часова зона: Unix cron използва часовата зона на сървъра по подразбиране. The Планировчиците на приложения (Symfony Scheduler, Quartz) често ви позволяват да зададете специална часова зона.
  • Липсваща минута: * * * * * изпълнява заданието всяка минута, което рядко е това, което искаме. Помислете за задаване на конкретен тригер (0) за почасови задачи.

Човешко четене и изход

В допълнение към израза cron, инструментът предлага кратко човешко четене („всички дни в полунощ", "на всеки 5 минути"). Това е предпазна мярка: ако изречението не отговаря на вашето намерение, изразът вероятно е грешен. За сложен случай използвайте нашия декодер на cron за изчисляване на следващите действителни дати на изпълнение.

Често задавани въпроси

Мога ли ръчно да редактирам израза след използване на интерфейса?

да Конструкторът не е изключителен режим: петте полета остават редактируеми по всяко време. Вие може да започне от предварително зададена настройка, след което да коригира поле на ръка, за да получиcrontab индивидуално изражение. Човешкото четене се преизчислява веднага.

Инструментът поддържа ли Quartz формат с 6 полета (със секунди)?

Не: форматът с 5 полета е стандартът на Unix и общата основа за повечето плановици (Linux crontab, Kubernetes CronJob, GitHub Actions, GitLab CI, Symfony Scheduler, Laravel Scheduler). Quartz (Java) приема допълнително поле за секунди и специфични символи (?, L, W, #), но тази нужда остава рядка.

Как се управлява часовата зона?

Конструкторът произвежда неутрален cron израз: двигателят е този, който изпълнява задачата, която прилага своето часова зона. В Linux crontab това е TZ на сървъра. В GitHub Actions е UTC. включено Kubernetes 1.27+, можете да зададете spec.timeZone в манифеста. Symfony Scheduler и Quartz излага специална часова зона за всяка задача.

Как да проверя израза си, без да го изпълнявам в продукция?

Използвайте нашия декодер на cron. Той изчислява следващите N изпълнения от текущия момент, без да започва никаква работа. Това е най-добрият начин да потвърдите, че a cron израз се задейства в планираното време преди внедряването му.

Какво общо има това със Symfony Scheduler?

Symfony Scheduler приема cron изрази с 5 полета чрез Schedule::cron('0 3 * * *', ...) . Следователно изразът, произведен от строителя, може да бъде поставен такъв, какъвто е. Същото за Laravel Планировчик (->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

CDRN - създадено от ARDNTECH