SystemdDoctor
OnBootSec= [Timer]

OnBootSec=, OnUnitActiveSec= и монотонные таймеры

Задают срабатывание относительно события, а не по календарю: OnBootSec= — от загрузки машины, OnUnitActiveSec= — от прошлой активации службы, OnStartupSec= — от запуска менеджера.

Что делает

Такие таймеры удобны для периодических задач, где важен интервал, а не точное время: проверять раз в пять минут, обновлять кеш каждый час. В отличие от календарных они не привязаны к часам и не «сбиваются» при переводе времени.

Классическая пара — OnBootSec= плюс OnUnitActiveSec=: первый задаёт задержку после загрузки, второй — интервал между последующими запусками.

Где ставится. В секции [Timer].

Значения

ЗначениеЧто происходит
OnBootSec=5minчерез пять минут после загрузки.
OnUnitActiveSec=1hчерез час после прошлой активации службы.
OnUnitInactiveSec=30minчерез полчаса после того, как служба стала неактивной.
OnStartupSec=2minчерез две минуты после запуска менеджера.

Пример

Периодическая проверка каждые десять минут.

[Timer]
OnBootSec=2min
OnUnitActiveSec=10min
AccuracySec=30s

[Install]
WantedBy=timers.target

Параметр точности разрешает systemd сдвигать срабатывание, группируя пробуждения: это экономит энергию и не мешает такой задаче.

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

OnUnitActiveSec= считается от активации, а не от завершения: для долгой задачи интервал может оказаться меньше ожидаемого.

Если задача выполняется дольше интервала, срабатывания будут накладываться: службу при этом повторно не запустят.

Монотонные таймеры не догоняют пропущенное: параметр Persistent= относится только к календарным.

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

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

Источники

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