SystemdDoctor
KillSignal= [Service]

KillSignal= и порядок сигналов при остановке службы

Задаёт сигнал, которым systemd просит службу завершиться. По умолчанию это TERM; после истечения таймаута остановки посылается KILL.

Что делает

Последовательность фиксированная: сигнал из этого параметра, ожидание TimeoutStopSec=, затем добивание сигналом из FinalKillSignal= (по умолчанию KILL). Менять первый сигнал нужно тогда, когда программа понимает под корректным завершением что-то другое.

Пример — nginx: для него QUIT означает «завершиться, доработав текущие соединения», а TERM — «завершиться немедленно». Для баз данных разница между INT и TERM тоже бывает значимой.

Где ставится. В секции [Service].

Значения

ЗначениеЧто происходит
SIGTERMпо умолчанию.
SIGQUITкорректное завершение у части служб.
SIGINTбыстрое, но корректное завершение у некоторых баз.
FinalKillSignal=SIGABRTдобивать с созданием дампа: полезно при разборе подвисаний.
SendSIGHUP=yesдополнительно послать HUP после основного сигнала.

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

Пример

Служба, которая корректно завершается по QUIT.

[Service]
KillSignal=SIGQUIT
TimeoutStopSec=60s
FinalKillSignal=SIGABRT

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

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

Смена сигнала без проверки реакции программы приводит к добиванию по таймауту.

Сигнал посылается всем процессам группы при KillMode=control-group — это нормально.

Если программа игнорирует сигнал, остановка всегда будет занимать весь таймаут.

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

  • signal=TERM (status=15/TERM) в systemdПроцесс службы завершён сигналом TERM. Когда это нормальная остановка, а когда признак проблемы.
  • signal=KILL (status=9/KILL) в systemdПроцесс службы убит сигналом KILL. Кто мог его послать: OOM-killer, таймаут остановки systemd, администратор.
  • signal=INT и signal=QUIT в systemdПроцесс службы завершён сигналом INT или QUIT. Кто их посылает службам и почему это обычно не systemd.
  • Failed with result 'timeout'Состояние timeout: служба не уложилась в отведённое время при запуске, остановке или перезагрузке настроек.

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

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

Источники

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