AccuracySec=: насколько точно срабатывает таймер systemd
Задаёт, насколько systemd может сдвинуть срабатывание таймера, чтобы объединить его с другими пробуждениями. Значение по умолчанию — одна минута.
Что делает
Это самая частая причина вопроса «почему таймер сработал в 03:00:41, а не в 03:00:00». Никакой ошибки нет: systemd специально группирует пробуждения, чтобы реже будить процессор, и по умолчанию позволяет себе минуту свободы.
Для большинства задач это безразлично. Если же время важно — например задача согласована с внешним расписанием, — значение нужно уменьшить явно, вплоть до микросекунд.
Где ставится. В секции [Timer]. Общее значение по умолчанию задаётся в параметрах менеджера.
Значения
| Значение | Что происходит |
|---|---|
1us | максимально точно; чаще будит процессор. |
1s | разумный компромисс для задач, где важна секунда. |
1min | значение по умолчанию. |
По умолчанию: 1min
Пример
Задача, которая должна выполняться точно в указанную секунду.
[Timer]
OnCalendar=*-*-* 03:00:00
AccuracySec=1s
Точнее секунды на обычном сервере смысла требовать мало: планировщик и нагрузка всё равно дадут разброс.
Типичные ошибки
Неточность в минуту по умолчанию удивляет при сверке журналов с внешним расписанием.
Максимальная точность заставляет процессор просыпаться чаще: на ноутбуках это заметно по расходу энергии.
Фактическое время срабатывания видно в systemctl list-timers — сверяйте по нему, а не по расписанию.
Связанные ошибки
- Таймер активен, но не срабатываетТаймер systemd в состоянии active, но служба не запускается. Разбор: нет условия срабатывания, таймер не включён, ошибка в OnCalendar.
Рядом стоящие параметры
Источники
- systemd.timer(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)