SystemdDoctor
KillMode= [Service]

KillMode= в systemd: какие процессы останавливаются вместе со службой

Определяет, какие процессы systemd завершает при остановке службы: все процессы её контрольной группы, только главный процесс или никого.

Что делает

Значение по умолчанию control-group — самое предсказуемое: останавливается всё, что служба породила. Именно это отличает systemd от старых init-скриптов, где «осиротевшие» процессы оставались жить и мешали следующему запуску.

Значения process и особенно none оставляют процессы работать после остановки службы. Иногда это нужно (Docker оставляет контейнеры работать при обновлении демона), но чаще приводит к занятому порту при следующем запуске и к процессам без хозяина.

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

Значения

ЗначениеЧто происходит
control-groupпо умолчанию: завершаются все процессы контрольной группы службы.
mixedсигнал завершения — только главному процессу, а KILL по таймауту — всей группе.
processзавершается только главный процесс; остальные продолжают работать.
noneничего не завершается. Объявлено устаревшим и оставлено для особых случаев.

По умолчанию: control-group

Пример

Служба, чьи дочерние процессы должны переживать перезапуск демона.

[Service]
KillMode=process
ExecStart=/usr/bin/dockerd
# при остановке демона контейнеры продолжают работать

Это осознанное исключение. Для обычных служб такое значение приводит к процессам без хозяина и к занятому порту при следующем запуске.

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

KillMode=none оставляет процессы работать после остановки: следующий запуск упрётся в занятый порт, а старые процессы придётся искать вручную.

При process и mixed дочерние процессы, не завершившиеся сами, останутся в системе.

Если служба порождает процессы через оболочку, при process завершится только оболочка, а работа продолжится.

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

  • Address already in use при запуске службыПорт или адрес уже занят: bind() failed (98: Address already in use). Как найти владельца порта и что делать с остатками прежнего процесса.
  • signal=KILL (status=9/KILL) в systemdПроцесс службы убит сигналом KILL. Кто мог его послать: OOM-killer, таймаут остановки systemd, администратор.
  • signal=INT и signal=QUIT в systemdПроцесс службы завершён сигналом INT или QUIT. Кто их посылает службам и почему это обычно не systemd.

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

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

Источники

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