О проекте

CronLens — учебный инструмент для cron-расписаний

CronLens раскладывает cron-выражение по настоящим часам выбранного пояса и показывает то, что обычно замечают только после первого сбоя: ночи перевода часов, чужие пояса и пересечения заданий.

Что здесь есть

  • Циферблат и ведомость — рабочий пример: до четырёх заданий, три правила перевода часов, замечания, экспорт .ics и JSON с отпечатком.
  • Справочник — словарь, легенда циферблата, правила и пределы; синтаксис и форматы — точные тексты ошибок и устройство файлов.
  • Пять разборов — перевод часов, пояс выражения, два поля дня, пересечения и пять полей.

Чего здесь нет

  • запуска заданий — CronLens ничего не выполняет;
  • напоминаний — в .ics нет VALARM, страница ничего не присылает;
  • хранения расписаний — состояние живёт на странице и в ссылке, которую вы копируете сами;
  • учётных записей и тарифов.

Как устроен расчёт

  1. Запишите задание. Выражение из пяти полей, пояс IANA и длительность с запасом. Под полем выражение сразу раскладывается на пять картушей и читается по-русски.
  2. Рассчитайте окно. Выберите начало окна, его длину и правило перевода часов. Нажмите «Рассчитать»: циферблат и ведомость строятся в браузере по базе часовых поясов.
  3. Прочитайте и сохраните. Разберите замечания, сравните три правила на дне перевода и скачайте .ics или JSON. Отпечаток ведомости покажет, что повторный расчёт дал тот же результат.

На чём основан подход

Поведение правил и форматов взято из первоисточников. Тексты и материалы этих проектов не копировались; ниже — названия документов, которые можно найти самостоятельно.

  • crontab(5) из cronie, man7.org — синтаксис пяти полей, правило ИЛИ, несуществующее и повторённое время. Отсюда правило «Буквально».
  • cron(8) из Debian, manpages.debian.org — особая обработка переводов меньше трёх часов для заданий с фиксированным временем. Отсюда классы заданий и правило «С догоном».
  • Amazon EventBridge Scheduler, раздел о типах расписаний и переходе на летнее время — пропуск и однократный повтор. Отсюда правило «Пропуск и один раз».
  • systemd-analyze calendar, freedesktop.org — нормализованная запись и ближайшие срабатывания в местном времени и UTC. Отсюда лента картушей и колонки ведомости.
  • RFC 5545 (iCalendar), rfc-editor.org — CRLF, свёртка по 75 октетов, разрыв и повтор для TZID. Отсюда .ics с моментами в UTC.