Когда я пытаюсь закрыть logind сеанс (войдя из), некоторые процессы продолжают работать под сессией, предотвращая его надлежащим образом прекращения, в результате чего user@uid.service не прекращение либо. Я слышал, что последнее является предполагаемым поведением (желательно, чтобы некоторые устройства оставались работающими), но я предполагаю, что оставление сеансов запущенным не является правильным способом для достижения этого. Кроме того, когда я вручную завершить сессию, user@uid.service также завершается, так что это почти кажется , что сохраняющиеся сессии используются для этой цели.
Чтобы проиллюстрировать, о чем я говорю, это часть вывода systemd-cgls когда я вхожу в систему (то есть прямо сейчас):
Control group /:
-.slice
└─user.slice
└─user-1000.slice
├─user@1000.service
│ └─ //various units listed; removed for brevity
└─session-c8.scope
├─4883 login -- sammko
├─4905 /usr/bin/gnome-keyring-daemon --daemonize --login
└─ //various other processes listed; removed for brevity
Выход полностью ожидаемый. После выхода из сеанса:
Control group /:
-.slice
└─user.slice
└─user-1000.slice
├─user@1000.service
│ └─ //various units listed; removed for brevity
└─session-c8.scope
└─4905 /usr/bin/gnome-keyring-daemon --daemonize --login
gnome-keyring-daemon каким - то образом выживает, поддерживая сеанс. Если мы теперь запустим loginctl show-session c8 , мы найдем State=closing closed в выводе. Если мы приступим к kill -HUP 4905 мы обнаружим, что процесс и сеанс завершаются, забирая весь user-uid.slice . Если бы мы приступили к kill -TERM 4905 , процесс также завершился бы. Это заставляет меня думать, что gnome-keyring-daemon не игнорирует сигналы или что-то в этом роде. В случае, если процессу требовался сигнал дважды для фактического закрытия, я пытался kill -HUP 4905 перед выходом из системы, и процесс также прекращался.
У меня сложилось впечатление, что systemd пытается завершить процессы с помощью SIGHUP , на что обычно отвечает gnome-keyring-daemon . (У меня также был gpg-agent и он успешно игнорирует SIGHUP . Но это другая история.)
Итак, мой вопрос: почему gnome-keyring-daemon продолжает работать после выхода из системы без видимой причины и как ее решить, кроме включения KillUserProcesses .
Также обратите внимание, что этот вопрос не связан с изменениями в systemd-230
