Обучение и инструменты 03.12.2025 955 просмотров

Cron в n8n: полный справочник расписаний с генератором выражений

#Cron #n8n #расписание #выражения #автоматизация #scheduler
Статья на тему: Cron в n8n: полный справочник расписаний с генератором выражений

Введение

В мире автоматизации не все процессы запускаются мгновенно по событию (Webhook). Огромный пласт задач требует выполнения по строгому расписанию: отправить ежедневный отчет в 09:00, сделать бекап базы данных каждое воскресенье в 02:00 ночи или проверять почту каждые 15 минут. Для решения этих задач в Linux-системах еще в 1970-х годах была придумана утилита cron, и её синтаксис актуален до сих пор.

Платформа n8n использует классические cron-выражения в узле Schedule Trigger. Да, в последних версиях n8n добавился удобный визуальный интерфейс ("запускать каждый день в..."), но для создания сложных гибких расписаний знания чистого cron-синтаксиса остаются незаменимыми. В этой статье мы научимся "читать" cron-выражения как обычный текст и приведем готовые шаблоны для ваших сценариев.

Анатомия Cron-выражения

Стандартное cron-выражение состоит из пяти обязательных полей (иногда шести, если поддерживаются секунды, но в n8n по умолчанию используется 5 полей для минут, часов, дней и т.д.). Поля разделяются пробелами.


* * * * *
| | | | |
| | | | +---- День недели (0 - 6) (Вс = 0 или 7)
| | | +------ Месяц (1 - 12)
| | +-------- День месяца (1 - 31)
| +---------- Час (0 - 23)
+------------ Минута (0 - 59)
        

Спецсимволы, которые делают магию:

  • * (Звездочка) — означает "каждый" (каждая минута, каждый час).
  • , (Запятая) — перечисление. Например, 1,15,30 в поле минут означает запуск в 1, 15 и 30 минут.
  • - (Дефис) — диапазон. Например, 1-5 в поле дней недели означает запуск с понедельника по пятницу.
  • / (Слеш) — шаг. Например, */10 в поле минут означает запуск каждые 10 минут.

Топ-10 готовых Cron-выражений для n8n

Хватит теории, давайте перейдем к практике. Эти расписания покрывают 90% потребностей бизнеса:

1. Запуск сценария каждый час (ровно в 00 минут)

Выражение: 0 * * * *

Зачем нужно: Идеально для обновления статусов заказов или агрегации метрик за прошедший час.

2. Запуск каждые 15 минут

Выражение: */15 * * * *

Зачем нужно: Проверка новых писем в ящике технической поддержки (через IMAP), чтобы клиенты не ждали ответа слишком долго.

3. Каждое утро в 09:00

Выражение: 0 9 * * *

Зачем нужно: Отправка утренней сводки (Daily Report) с показателями продаж директору в Telegram или Slack.

4. В 18:30 по будням (с понедельника по пятницу)

Выражение: 30 18 * * 1-5

Зачем нужно: Автоматическое выключение тестовых серверов в облаке по завершении рабочего дня для экономии денег.

5. Каждую полночь (00:00)

Выражение: 0 0 * * *

Зачем нужно: Очистка временных таблиц базы данных или обнуление суточных счетчиков посещаемости.

6. В 02:00 ночи каждую субботу и воскресенье

Выражение: 0 2 * * 6,0 (напоминаю: 0 — это воскресенье)

Зачем нужно: Запуск тяжелых сценариев синхронизации каталогов (ERP <-> Сайт), когда нагрузка на сервера минимальна.

7. 1-го числа каждого месяца в 08:00

Выражение: 0 8 1 * *

Зачем нужно: Автоматическая генерация и рассылка бухгалтерских актов и счетов (Invoices) клиентам за прошедший месяц.

8. В 14:00 только по рабочим дням

Выражение: 0 14 * * 1-5

Зачем нужно: Напоминание менеджерам о необходимости закрыть "зависшие" сделки перед концом дня.

9. В рабочее время каждый час (с 09:00 до 18:00) с Пн по Пт

Выражение: 0 9-18 * * 1-5

Зачем нужно: Активный мониторинг работоспособности сайта (Ping) только тогда, когда команда поддержки на рабочем месте.

10. Каждые 5 минут в определенное окно (с 10:00 до 10:55)

Выражение: */5 10 * * *

Зачем нужно: Интенсивный парсинг данных (например, билетов на самолет или курсов валют) перед важным утренним митингом.

Частые ошибки при настройке Cron в n8n

Ошибка 1: Часовые пояса (Timezones). n8n берет часовой пояс из глобальных настроек (переменная окружения GENERIC_TIMEZONE). Если вы не задали эту переменную при установке, n8n будет работать по UTC (Гринвичу). В итоге ваш сценарий, настроенный на 09:00 утра, запустится в 12:00 по Москве.

Решение: Всегда явно указывайте свой часовой пояс в docker-compose, например: GENERIC_TIMEZONE=Europe/Moscow.

Ошибка 2: Пропуск минут. Очень часто новички пишут * 9 * * * желая запустить процесс в 9 утра. Ошибка! Звездочка на первой позиции означает "каждую минуту". Этот скрипт будет запускаться каждую минуту с 09:00 до 09:59 (60 раз подряд!). Правильно: 0 9 * * *.

Заключение

Синтаксис Cron может показаться недружелюбным с первого взгляда, но это универсальный стандарт де-факто в IT-индустрии на протяжении десятилетий. Узел Schedule Trigger в n8n позволяет совместить надежность этого старого механизма с мощью современной автоматизации API. Запомните приведенные выше шаблоны, и вы сможете запрограммировать любое, даже самое сложное расписание бизнес-процессов.

Полезные материалы по теме