Когда я пытаюсь закрыть 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