systemd linger в Debian: когда он нужен и что меняет
Это практическая заметка о двух связанных настройках systemd. systemd-logind умеет завершать пользовательские процессы при выходе из сеанса через параметр KillUserProcesses в /etc/systemd/logind.conf. В современных Debian эта функция по умолчанию не включена, поэтому процессы пользователя обычно продолжают работать после выхода. Автор описывает случай с рабочими станциями KDE: включение завершения процессов при выходе помогало избавиться от зависших процессов Akonadi и других служб KDE без перезагрузки компьютера.
По словам автора, распространённое представление о том, что linger нужен для работы screen, tmux или nohup после выхода, для Debian обычно неверно: при настройках, близких к стандартным, процессы и так не завершаются. Linger можно включить или выключить для своей учётной записи командами loginctl enable-linger и loginctl disable-linger; root может передать имя другой учётной записи как аргумент. Документированного способа проверить, для каких учётных записей linger включён, автор не нашёл; на практике он предлагает смотреть содержимое /var/lib/systemd/linger.
Главное отличие linger в описанной конфигурации Debian, запуск программ в пользовательском контексте до входа владельца учётной записи. Автор заметил, что один из сценариев установки ИИ-программ на его сервере сам включил linger, вероятно исходя из ошибочного предположения о необходимости настройки для nohup. На своём ноутбуке автор включил linger во время тестирования новых политик SELinux: после загрузки компьютер подключается к Wi‑Fi до графического входа, и к нему можно подключиться по SSH, даже если сломана настройка экрана входа X11 или Wayland. Он также ожидает, что предварительный запуск фоновых служб PipeWire и Bluetooth немного ускорит работу после входа.
Ключевые факты
- В Debian с близкими к стандартным настройками systemd-logind не завершает пользовательские процессы при выходе из сеанса.
- KillUserProcesses можно включить в /etc/systemd/logind.conf; автор применял это на рабочих станциях KDE, чтобы при повторном входе не оставались проблемные службы вроде Akonadi.
- Linger обычно не требуется, чтобы screen, tmux или nohup продолжали работать после выхода из сеанса в Debian.
- Linger включается и выключается через loginctl enable-linger и loginctl disable-linger; для другой учётной записи команды выполняет root с именем пользователя в аргументе.
- При включённом linger пользовательские программы могут стартовать до входа, что позволило автору подключаться к ноутбуку по SSH после загрузки и до графического входа.
Почему это важно
Linger часто считают обязательным условием для сохранения screen, tmux и nohup после выхода из сеанса. Автор подчёркивает, что в Debian при близкой к стандартной конфигурации это не так: процессы не завершаются, пока отдельно не включён KillUserProcesses. Реальная роль linger здесь, ранний запуск пользовательских служб до входа.
Кому это важно
Настройка полезна администраторам и пользователям Debian, которые управляют фоновыми пользовательскими службами, подключаются к машине по SSH или отлаживают вход в графическую среду. Отдельно она может пригодиться тем, кто хочет при выходе очищать зависшие процессы на общих или проблемных рабочих станциях KDE.
Как это применить
Для своей учётной записи используйте loginctl enable-linger или loginctl disable-linger. Root может выполнить те же команды, добавив имя нужной учётной записи. Чтобы проверить включённые учётные записи, автор предлагает посмотреть /var/lib/systemd/linger. Перед включением KillUserProcesses в /etc/systemd/logind.conf стоит учитывать, что это меняет поведение всех пользовательских процессов при выходе.
Можно ли доверять
Это личная техническая заметка, основанная на опыте автора с Debian, KDE и собственным ноутбуком. В ней приведены конкретные команды и путь к настройке, но автор прямо оговаривает, что не исследовал все возможные сочетания конфигураций systemd и дистрибутивов.
Риски и подводные камни
Если включить KillUserProcesses, фоновые процессы пользователя будут завершаться при выходе, если не настроить исключения; это может быть нежелательно для некоторых сценариев. Обратная ошибка, автоматически включать linger установочным скриптом, предполагая, что без него не работает nohup: автор столкнулся именно с таким включением на сервере. Поведение может отличаться при нестандартной конфигурации и в других дистрибутивах.
«В системе Debian с близкими к стандартным настройками процессы не будут завершаться при выходе, и единственное отличие, которое даёт linger, запуск программ в пользовательском контексте до входа пользователя.»
— Автор заметки