SystemdDoctor
OnCalendar= [Timer]

OnCalendar= в systemd: расписание таймера

Задаёт расписание срабатывания таймера в календарном виде: дни недели, дата и время. Формат свой, не совпадающий с crontab.

Что делает

Общий вид: ДниНедели Год-Месяц-День Час:Минута:Секунда. Любую часть можно заменить звёздочкой или опустить. Есть сокращения: minutely, hourly, daily, weekly, monthly, yearly.

Проверять запись нужно командой systemd-analyze calendar "выражение": она печатает нормализованный вид и ближайшие срабатывания. Это быстрее и надёжнее, чем перезапускать таймер и ждать.

Где ставится. В секции [Timer]. Можно указать несколько строк — таймер сработает по каждому расписанию.

Значения

ЗначениеЧто происходит
dailyкаждый день в 00:00.
*-*-* 03:00:00каждый день в три часа ночи.
Mon..Fri 09:00по рабочим дням в девять утра.
*-*-01 04:00:00первого числа каждого месяца.
*-*-* *:00/15:00каждые 15 минут.
*-*~01 23:00:00в последний день месяца.

Пример

Ночная задача с разбросом и догоном пропущенного.

[Timer]
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=15min
Persistent=true

[Install]
WantedBy=timers.target

Разброс нужен, когда одинаковые таймеры стоят на десятках машин: иначе все они стучатся в одну секунду.

Типичные ошибки

Формат crontab (0 3 * * *) не разбирается: это другой синтаксис.

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

Дни недели пишутся сокращениями на латинице, диапазон — двумя точками.

Проверять расписание перезапуском таймера долго: есть systemd-analyze calendar.

Связанные ошибки

Рядом стоящие параметры

Где важен на практике

Источники

  • systemd.time(7) официальная документация
    сверено 15 сентября 2026
  • systemd.timer(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026