Lorsque j'essaie de fermer une logind
session (en me déconnectant), certains processus continuent de s'exécuter sous la session, l'empêchant de se terminer correctement, ce qui entraîne l' user@uid.service
absence de fin. J'ai entendu dire que ce dernier comportement est prévu (il est souhaitable que certaines unités continuent à fonctionner), mais je suppose que laisser les sessions en cours n'est pas le moyen approprié pour y parvenir. En outre, lorsque je termine manuellement la session, le user@uid.service
serveur se termine également, il semble donc que des sessions en attente soient utilisées à cette fin.
Pour illustrer ce que je suis sur, ceci est une partie de la sortie de systemd-cgls
alors que je suis normalement connecté (c'est à dire en ce moment):
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
La sortie est complètement attendue. Après vous être déconnecté de la session:
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
survit en quelque sorte, maintenant la session en vie. Si nous courons maintenant loginctl show-session c8
, nous trouvons State=closing
dans la sortie. Si nous continuons, kill -HUP 4905
nous constatons que le processus et la session se terminent, entraînant le tout user-uid.slice
avec lui. Si nous devions procéder kill -TERM 4905
, le processus aurait également pris fin. Cela me fait penser que gnome-keyring-daemon
cela n'ignore pas les signaux, ni rien de ce genre. Au cas où le processus aurait besoin d'un signal deux fois pour se fermer, j'ai essayé de le faire kill -HUP 4905
avant de me déconnecter et le processus s'est également terminé.
J'avais l'impression que systemd tente de mettre fin aux processus SIGHUP
auxquels il gnome-keyring-daemon
répond normalement. (Je m'y suis gpg-agent
attardé également, et je ne l’ai jamais ignoré SIGHUP
. Mais c’est une autre histoire.)
Ma question est donc la suivante: pourquoi gnome-keyring-daemon
continuer à fonctionner après la déconnexion sans raison apparente et comment le résoudre, à part l’activation KillUserProcesses
.
Veuillez également noter que cette question n’est pas liée aux changements de systemd-230