systemd n'essaie pas d'arrêter (certains) processus à la fin de la session

4

Lorsque j'essaie de fermer une logindsession (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' [email protected]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 [email protected]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-cglsalors que je suis normalement connecté (c'est à dire en ce moment):

Control group /:
-.slice
└─user.slice
  └─user-1000.slice
    ├─[email protected]
    │ └─ //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
    ├─[email protected]
    │ └─ //various units listed; removed for brevity
    └─session-c8.scope
      └─4905 /usr/bin/gnome-keyring-daemon --daemonize --login

gnome-keyring-daemonsurvit en quelque sorte, maintenant la session en vie. Si nous courons maintenant loginctl show-session c8, nous trouvons State=closingdans la sortie. Si nous continuons, kill -HUP 4905nous constatons que le processus et la session se terminent, entraînant le tout user-uid.sliceavec lui. Si nous devions procéder kill -TERM 4905, le processus aurait également pris fin. Cela me fait penser que gnome-keyring-daemoncela 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 4905avant de me déconnecter et le processus s'est également terminé.

J'avais l'impression que systemd tente de mettre fin aux processus SIGHUPauxquels il gnome-keyring-daemonrépond normalement. (Je m'y suis gpg-agentattardé également, et je ne l’ai jamais ignoré SIGHUP. Mais c’est une autre histoire.)

Ma question est donc la suivante: pourquoi gnome-keyring-daemoncontinuer à 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

sammko
la source
Très belle question, mais une autre chose en désordre avec systemd ... cela se produit également si vous exécutez un script qui appelle sleep ou loop sleep (il
reste