3

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

0