Перейти до основного вмісту
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 ActionsGitHub Actions використовує синтаксис cron для запланованих робочих процесів. Побудуйте та перевірте ваш розклад тут.
  • Побудова Cron для Kubernetes CronJobsРесурси Kubernetes CronJob використовують стандартний синтаксис cron. Побудуйте та візуально поясніть вираз.
  • Побудова записів Cron для Linux crontabПобудуйте вирази для традиційного Unix cron (cron, crontab -e) впевнено.
  • Планування завдань обслуговування бази данихПланіруйте завдання резервного копіювання, очищення або аналізу впевнено, використовуючи вирази cron.
  • Дізнайтеся, як працюють вирази CronКожна коригування показує миттєве чітке пояснення англійською мовою та попередній перегляд наступних 5 запусків — найкращий спосіб вивчити cron.

Як це працює

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

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

Схожі інструменти

Часті запитання