SystemdDoctor
SuccessExitStatus= [Service]

SuccessExitStatus= и RestartPreventExitStatus=

SuccessExitStatus= перечисляет коды и сигналы, которые systemd должен считать успешным завершением. RestartPreventExitStatus= перечисляет коды, при которых перезапуск не выполняется.

Что делает

Первый параметр нужен программам со своими соглашениями: например код 2 может означать «нечего делать», а не ошибку. Без него такая служба всегда будет помечена упавшей.

Второй параметр важнее, чем кажется: он позволяет остановить бесполезный цикл перезапусков. Если программа вернула код «неверная конфигурация», перезапуск ничего не исправит — и лучше остаться в состоянии failed, чем крутиться до предела частоты запусков.

Где ставится. В секции [Service]. Перечисляются числа и имена сигналов через пробел.

Значения

ЗначениеЧто происходит
SuccessExitStatus=2 8 SIGKILLэти коды и сигнал считаются успехом.
RestartPreventExitStatus=78при этом коде перезапуска не будет.
RestartForceExitStatus=75при этом коде перезапуск будет даже при Restart=on-success.

Пример

Служба, которая сообщает кодом «нечего делать», и запрет перезапуска при ошибке настроек.

[Service]
SuccessExitStatus=2
RestartPreventExitStatus=78
Restart=on-failure
RestartSec=10s

Код 78 из набора sysexits означает ошибку настройки. Перезапускать службу с неверной настройкой бессмысленно: она будет падать так же.

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

Без объявления успешных кодов служба с нестандартным соглашением всегда выглядит упавшей.

Слишком широкий список успешных кодов маскирует настоящие сбои.

Имена сигналов пишутся с префиксом SIG, числа — без него; смешивать в одной строке можно.

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

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

Источники

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