Persistent=true: догон пропущенных срабатываний таймера
Заставляет таймер выполнить пропущенное срабатывание сразу после загрузки, если в назначенное время машина была выключена или systemd не работал.
Что делает
Без этого параметра пропущенный запуск просто теряется. Для ночного обслуживания на машинах, которые выключают, это критично: задача не выполнится ни разу.
Состояние таймеров systemd хранит в /var/lib/systemd/timers. По этим файлам он и определяет, было ли срабатывание. За все пропущенные периоды задача выполнится однократно, а не по разу за каждый.
Где ставится. В секции [Timer]. Имеет смысл только вместе с OnCalendar=.
Значения
| Значение | Что происходит |
|---|---|
true | выполнить пропущенный запуск после загрузки. |
false | по умолчанию: пропущенные срабатывания теряются. |
По умолчанию: false
Пример
Ежедневное резервное копирование, которое не должно пропадать.
[Timer]
OnCalendar=daily
Persistent=true
RandomizedDelaySec=10min
Разброс тут особенно полезен: без него все пропущенные задачи после загрузки запустятся одновременно.
Типичные ошибки
За несколько пропущенных периодов задача выполнится один раз, а не по разу за каждый.
Запуск сразу после загрузки может застать неготовую сеть или непримонтированные диски: добавьте разброс или зависимости.
Удаление файлов состояния из /var/lib/systemd/timers сбрасывает историю: следующая загрузка вызовет запуск.
Связанные ошибки
- Пропущенное срабатывание таймера: Persistent и выключенная машинаТаймер не выполнил задачу, потому что в момент срабатывания машина была выключена или служба была недоступна. Как работает Persistent=true.
- Таймер активен, но не срабатываетТаймер systemd в состоянии active, но служба не запускается. Разбор: нет условия срабатывания, таймер не включён, ошибка в OnCalendar.
Рядом стоящие параметры
Где важен на практике
Источники
- systemd.timer(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)