RuntimeMaxSec=: ограничение времени работы службы
Ограничивает время работы службы: по его истечении systemd останавливает её, как при таймауте. Полезно для задач, которые не должны идти бесконечно.
Что делает
Два основных применения. Первое — задачи с ограниченным смыслом: выгрузка, обход, проверка. Если задача идёт дольше разумного, лучше прервать её и разобраться. Второе — управляемый перезапуск служб с утечкой памяти: честнее перезапускать по расписанию, чем ждать смерти от нехватки памяти.
Где ставится. В секции [Service]. Есть родственный параметр случайного разброса.
Значения
| Значение | Что происходит |
|---|---|
1h | служба будет остановлена через час работы. |
infinity | без ограничения (по умолчанию). |
RuntimeRandomizedExtraSec=10min | случайная добавка, чтобы службы не перезапускались одновременно. |
По умолчанию: infinity
Пример
Задача обхода с ограничением времени.
[Service]
Type=oneshot
RuntimeMaxSec=30min
ExecStart=/usr/local/bin/crawl --all
Для задач по таймеру это защита от наложения запусков: зависшая задача не будет держать место следующей.
Типичные ошибки
Служба завершается принудительно: результат помечается таймаутом, и мониторинг это увидит как сбой.
Для постоянно работающих служб параметр означает регулярный перезапуск — убедитесь, что это допустимо.
Связанные ошибки
- Failed with result 'timeout'Состояние timeout: служба не уложилась в отведённое время при запуске, остановке или перезагрузке настроек.
- signal=TERM (status=15/TERM) в systemdПроцесс службы завершён сигналом TERM. Когда это нормальная остановка, а когда признак проблемы.
- Таймер срабатывает, но задача падает незаметноТаймер работает исправно, а задача каждый раз завершается ошибкой, и об этом никто не узнаёт. Как настроить оповещение через OnFailure.
Рядом стоящие параметры
Источники
- systemd.service(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)