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 в состоянии active, но служба не запускается. Разбор: нет условия срабатывания, таймер не включён, ошибка в OnCalendar.
- Таймер срабатывает, но задача падает незаметноТаймер работает исправно, а задача каждый раз завершается ошибкой, и об этом никто не узнаёт. Как настроить оповещение через OnFailure.
Рядом стоящие параметры
Источники
- systemd.timer(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)