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' user@uid.serviceabsence 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.serviceserveur 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
    ├─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-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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.