SystemdDoctor
мешает работе области процессы

Процессы вне служб: области и потерянные процессы

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

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

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

  1. Программа запущена из терминала

    Так часто «временно» поднимают службу. Процесс живёт в области сеанса и исчезает при выходе или при очистке сеансов.

  2. Процесс отвязан от сеанса вручную

    Запуск с отвязкой создаёт процесс без хозяина: он не принадлежит ни службе, ни сеансу.

  3. Процессы остались после остановки службы

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

Диагностика

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

Дерево групп: видно, что работает вне служб.

systemd-cgls --no-pager | head -30

Процессы и их группы.

ps -eo pid,cgroup,cmd | grep -v systemd | head

Сеансы: процессы из них завершатся при выходе.

loginctl list-sessions

Решение

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

1. Программа запущена из терминала
Почему происходит
Так часто «временно» поднимают службу. Процесс живёт в области сеанса и исчезает при выходе или при очистке сеансов.
Как проверить
Посмотрите, в какой группе работает процесс.
systemd-cgls --no-pager | grep -B5 myapp | head -12
ps -o pid,cgroup,cmd -p $(pgrep -o myapp)
Как исправить
Переведите программу в службу: создайте unit-файл или запустите через временный unit командой запуска.
sudo systemd-run --unit=myapp-temp /usr/local/bin/myapp
2. Процесс отвязан от сеанса вручную
Почему происходит
Запуск с отвязкой создаёт процесс без хозяина: он не принадлежит ни службе, ни сеансу.
Как проверить
Посмотрите родителя и группу процесса.
ps -o pid,ppid,cgroup,cmd -p $(pgrep -o myapp)
Как исправить
Такие процессы стоит завершить и запустить нормально: без unit они не переживут перезагрузку и не попадут в мониторинг.
3. Процессы остались после остановки службы
Почему происходит
При режиме завершения, оставляющем потомков, процессы продолжают работать вне управления.
Как проверить
Посмотрите режим завершения и оставшиеся процессы.
systemctl show myapp.service -p KillMode
pgrep -a myapp
Как исправить
Смените режим завершения на завершение всей группы, если процессы не должны переживать остановку.

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

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

$ systemd-cgls --no-pager | grep -A2 "session-42.scope"
└─session-42.scope
  ├─4100 -bash
  └─4180 /usr/local/bin/myapp --serve

$ systemctl status myapp.service
Unit myapp.service could not be found.

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

Источники

  • systemd.scope(5)
    Области и процессы вне служб.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • systemd-run(1)
    Запуск программы во временном unit.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено запуском программы из терминала: она попадает в область сеанса.
    собственная проверка, systemd 255
    сверено 15 сентября 2026