·4 мин. чтения

Помощник с cron-выражениями для Mac

Написание строки расписания вручную и надежда, что она означает именно то, что вы думаете, — вот почему задачи запускаются в 3 ночи вместо 3 дня.

Синтаксис cron — это пять полей чисел и символов, которые должны каким-то образом выразить «каждый будний день в 9 утра, кроме праздников» или «каждые 15 минут с 8 до 18». Поля — минута, час, день месяца, месяц и день недели — в порядке, который никто не запоминает правильно с первого раза, а звёздочки, запятые, дефисы и слэши означают разные вещи в зависимости от позиции.

0 9 * * 1-5 выглядит разумно, но это 9 утра или 9 вечера, и означает ли 1-5 с понедельника по пятницу или что-то совершенно другое в зависимости от того, считает ли реализация cron воскресенье как 0 или как 7? Ошибиться в этом в пайплайне деплоя, задаче резервного копирования или запланированном отчёте означает либо тихие сбои, либо срабатывание задачи в неудобное время — иногда неделями, пока кто-то не заметит.

У каждой реализации cron свои особенности

Стандартный Unix cron, CronJob в Kubernetes, AWS EventBridge и различные платформы CI используют примерно один и тот же синтаксис из пяти полей, но немного различаются — поддерживаются ли секунды, как работает нумерация дней недели, действительны ли определённые сокращения вроде @daily. Написать расписание, которое сработает правильно с первого деплоя, значит точно понимать, с какой разновидностью cron вы имеете дело.

Переводите выражения на понятный язык

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

Bellows cron expression helper explaining a schedule string on macOS

Проверка перед деплоем

Запланированная задача, срабатывающая в неверное время, часто оказывается тихим сбоем — ничего не падает, она просто запускается не тогда, когда вы намеревались, иногда пересекаясь с окном обслуживания или нагружая базу данных в час пик. Проверка простого текстового значения строки cron перед мержем конфигурации деплоя ловит это до того, как оно превратится в вызов в 2 часа ночи.

Чтение чужого расписания

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

Получить Bellows в Mac App Store

Следующая статья

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store