Към основното съдържание
LibraTool logoLibraTool

Конструктор на cron изрази — безплатно

Изграждайте, валидирайте и обяснявайте cron изрази за планирани задачи. Описание на жив обикновен език, преглед на следващите 5 изпълнения и предварителни настройки за общи шаблони.

Работи офлайн след зареждане
минута
(0-59)
час
(0-23)
ден
(1-31)
месец
(1-12)
ден от седмицата
(0-7)

На разбираем език

В 09:00, Понеделник до петък.

Чести шаблони

Съвместимо со стандартен Unix cron, GitHub Actions, Kubernetes CronJob и повечето системи за планиране. Използвайте * за „всеки", */5 за „на всеки 5", 1-5 за диапазони, 1,15 за конкретни стойности. Също така приема @hourly, @daily, @weekly, @monthly, @yearly и имена като MON-FRI или JAN-DEC.

Често срещани употреби

  • Построяване на Cron за GitHub Actions работни потоциGitHub Actions използва cron синтаксис за планирани работни потоци. Постройте и проверете вашия график тук.
  • Построяване на Cron за Kubernetes CronJobsKubernetes CronJob ресурсите използват стандартна cron синтаксис. Постройте и обяснете израза визуално.
  • Построяване на Cron записи за Linux crontabПостройте изрази за традиционален Unix cron (cron, crontab -e) с увереност.
  • Планиране на работи за поддържане на база данниПланирайте резервни копия, вакуум или анализирайте работи с увереност, като използвате cron изрази.
  • Научете как работят Cron изразаВсяко коригиране показва незабавно обяснение на английския език и преглед на следващите 5 бягания — най-добрият начин да научите cron.

Как работи

Конструкторът на cron изрази работи изцяло във вашия браузър чрез ръчно написан анализатор в lib/cron.ts — без външна библиотека, без обръщение към сървъра. Той валидира израза, сглобява описание на прост английски, използвайки вградените Intl.DateTimeFormat и Intl.ListFormat API на браузъра за имена на дни и месеци, съобразени с локала, и изчислява следващите планирани времена за изпълнение, обхождайки напред във времето с логика на прескачане на полета, вместо груба сила през всяка минута.

  1. 1
    Изразът се анализира поле по поле
    Анализаторът разделя израза на пет (или шест) полета, разделени с интервали, и токенизира всяко от тях за запетаи, диапазони (напр. 1-5), нотация за стъпка (напр. */15) и именувани стойности като MON или JAN. @макроси като @daily се разгъват до петполевите им еквиваленти преди анализа да започне. Невалидни стойности или числа извън диапазона се появяват като типизирани ключове за грешка, картографирани към локализирани съобщения.
  2. 2
    Сглобено описание, четимо от човек
    describeCron() в lib/cron.ts изгражда изречението на английски (или локализирано), проверявайки кои полета са символи за всичко (wildcards) спрямо изрични набори. Имената на дните и месеците се разрешават чрез Intl.DateTimeFormat с активния локал, а елементите на списъка се съединяват чрез Intl.ListFormat, така че съюзът („и“ спрямо „,“ или специфична за локала форма) съответства на езика на потребителя.
  3. 3
    Следващите времена за изпълнение се изчисляват с прескачане на полета
    nextRuns() обхожда обект Date напред от текущия момент, но прескача цели месеци, дни или часове, които не могат да съвпаднат, вместо да тества всяка минута. Това означава, че невъзможен график като 30 февруари бързо приключва чрез петгодишна проверка на хоризонта, вместо да обикаля 2.6 милиона пъти.
  4. 4
    Изразът се споделя чрез URL фрагмента
    Всеки въведен от вас израз се записва в URL фрагмента на страницата като #expr= (с отлагане от 500 мс чрез window.history.replaceState). Фрагментът никога не се изпраща до сървър; страницата се хидратира от него при зареждане, така че споделянето или отмятането на URL възстановява точния израз без каквото и да е състояние на сървъра.

Свързани инструменти

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