SystemdDoctor
Restart= [Service]

Restart= в systemd: когда служба перезапускается сама

Определяет, в каких случаях systemd перезапускает службу после её завершения. По умолчанию перезапуска нет вовсе: упавшая служба остаётся остановленной.

Что делает

Значение по умолчанию no удивляет многих: единственный сбой оставляет службу лежать до ручного вмешательства или перезагрузки. Для постоянно работающих служб почти всегда нужен on-failure, а always — там, где служба должна работать при любых обстоятельствах, включая штатное завершение.

Перезапуск ограничен пределом частоты: StartLimitBurst= запусков за StartLimitIntervalSec=. Превысив его, служба уходит в состояние start-limit-hit и не запускается даже вручную, пока счётчик не сброшен. Поэтому Restart=always без RestartSec= — плохая пара: падающая служба упирается в предел за секунды.

Где ставится. В секции [Service]. Обратите внимание: RestartSec= задаёт паузу и относится сюда же.

Значения

ЗначениеЧто происходит
noпо умолчанию: перезапуска нет.
on-failureпри ненулевом коде, сигнале, таймауте и срабатывании сторожевого таймера. Обычный выбор для служб.
alwaysвсегда, включая штатное завершение с нулевым кодом.
on-successтолько при успешном завершении — редкий случай, для служб, работающих циклами.
on-abnormalпри сигнале, таймауте и сторожевом таймере, но не при ненулевом коде.
on-abortтолько при завершении сигналом, который не был перехвачен.
on-watchdogтолько по срабатыванию сторожевого таймера.

По умолчанию: no

Пример

Обычная настройка перезапуска для постоянно работающей службы.

[Service]
Restart=on-failure
RestartSec=5s
# окно частоты запусков задаётся в [Unit]
[Unit]
StartLimitIntervalSec=60
StartLimitBurst=5

Пять попыток за минуту с паузой в пять секунд — разумный запас: разовый сбой лечится сам, а бесконечный цикл останавливается.

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

Restart=always вместе с Type=oneshot даёт цикл: задача отрабатывает и запускается снова. Для регулярных задач нужен таймер.

Без RestartSec= перезапуск идёт мгновенно, и служба упирается в предел частоты запусков за секунды.

Перезапуск маскирует проблему: служба «работает», а причина падений остаётся. Стоит смотреть счётчик NRestarts.

Параметры предела частоты (StartLimitBurst=, StartLimitIntervalSec=) живут в секции [Unit], а не [Service] — их легко поставить не туда.

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

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

Где важен на практике

Источники

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