SystemdDoctor
служба не работает состояния результата остановка

Служба застряла в состоянии deactivating

Состояние остановки, которое не заканчивается, блокирует и перезапуск, и выключение машины. Причины делятся на две группы: процесс игнорирует сигнал завершения или находится в состоянии, из которого его нельзя убить. Вторая группа сигналами не лечится.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Процесс не реагирует на сигнал завершения

    Программа не обрабатывает сигнал или занята длительной операцией. systemd ждёт до истечения таймаута остановки.

  2. Процесс в непрерываемом ожидании

    Процесс ждёт ввода-вывода и не получает сигналов вовсе. Ни один сигнал его не завершит.

  3. Режим остановки оставляет дочерние процессы

    При остановке только главного процесса дочерние остаются и держат срез службы активным.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Таймаут и способ остановки службы.

systemctl show myapp.service -p TimeoutStopSec -p KillMode -p KillSignal

Какие процессы ещё живы в срезе службы.

systemd-cgls -u myapp.service

Процессы в непрерываемом ожидании.

ps -eo pid,stat,wchan:24,cmd | awk '$2 ~ /D/'

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Процесс не реагирует на сигнал завершения
Почему происходит
Программа не обрабатывает сигнал или занята длительной операцией. systemd ждёт до истечения таймаута остановки.
Как проверить
Посмотрите таймаут и состояние процессов службы.
systemctl show myapp.service -p TimeoutStopSec -p KillSignal -p KillMode
ps -o pid,stat,wchan:20,cmd -C myapp 2>/dev/null
Как исправить
Задайте разумный таймаут остановки: по его истечении systemd применит жёсткий сигнал. Бесконечное ожидание останавливает и выключение машины.
2. Процесс в непрерываемом ожидании
Почему происходит
Процесс ждёт ввода-вывода и не получает сигналов вовсе. Ни один сигнал его не завершит.
Как проверить
Посмотрите состояние процессов.
ps -eo pid,stat,wchan:24,cmd | awk '$2 ~ /D/' | head
Как исправить
Устраните причину ожидания: недоступный диск или сетевую файловую систему. До этого процесс не завершится, сколько ни ждать.
3. Режим остановки оставляет дочерние процессы
Почему происходит
При остановке только главного процесса дочерние остаются и держат срез службы активным.
Как проверить
Посмотрите режим остановки и дерево процессов службы.
systemctl show myapp.service -p KillMode -p FinalKillSignal
systemd-cgls -u myapp.service 2>/dev/null | head
Как исправить
Выберите режим остановки, завершающий всю группу процессов. Режим с одним главным процессом уместен редко и требует, чтобы программа убирала за собой сама.

Пример вывода

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

systemd[1]: Stopping myapp.service - My application...
systemd[1]: myapp.service: State 'stop-sigterm' timed out. Killing.
systemd[1]: myapp.service: Killing process 9600 (myapp) with signal SIGKILL.
systemd[1]: myapp.service: Processes still around after SIGKILL. Ignoring.

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

Источники

  • systemd.kill(5)
    KillMode=, KillSignal= и порядок остановки.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на systemd 255: процесс в непрерываемом ожидании не завершается жёстким сигналом.
    собственная проверка, systemd 255
    сверено 15 сентября 2026