J'essaie d'obtenir un arrêt / redémarrage gracieux dans ArchLinux avec GNOME Shell. Maintenant, lorsque je demande l'arrêt, il s'arrête immédiatement sans donner aux programmes ouverts le temps de fermer / enregistrer les fichiers ouverts avec élégance. Par conséquent, chaque fois que je redémarre Chrome (par exemple), il me dit que la session n'a pas été fermée correctement, etc. En lisant sur le Web, j'ai appris que systemd lors de l'arrêt des processus, il envoie d'abord un SIGTERM
suivi de SIGKILL
si le processus ne se ferme pas. avec un délai d'attente donné. Cependant, je remarque que mon système SIGKILL
est envoyé immédiatement après SIGTERM
et je suppose que c'est la cause d'une interruption non gracieuse des programmes.
J'ai trouvé une documentation qui (si je la lis correctement) indique que le délai avant l'envoi SIGKILL
peut être défini par TimeoutStopSec=
option. L'envoi SIGKILL
pourrait également être désactivé par SendSIGKILL=
option. Mais je ne trouve pas où configurer ces options ... y a-t-il un fichier de configuration d'arrêt / redémarrage de systemd où je peux définir ces options?
ÉDITER:
J'ai fait quelques tests et j'ai découvert deux choses intéressantes:
- Si je ferme manuellement le chrome comme celui
killall -SIGTERM chrome
-ci, il ne se plaindra pas qu'il n'a pas été correctement fermé la prochaine fois que je le redémarrerai. Si je le ferme comme ça à la placekillall -SIGKILL chrome
, il se plaindra. Cela m'indique que Chrome gère correctement SIGTERM. - En regardant le résultat de ma procédure d'arrêt, systemd imprime
Sending SIGTERM...
immédiatement suivi deSending SIGKILL...
Selon le commentaire ci-dessous, systemd gère uniquement ses processus. Donc dans mon cas GDM. Cela me dit que le problème pourrait être:
- Soit GDM ne ferme pas correctement ses processus enfants (par exemple Chrome) (c'est-à-dire en leur envoyant SIGTERM)
- ou systemd envoie à GDM un message SIGKILL pour ne pas lui donner le temps de fermer correctement ses enfants.
Existe-t-il un moyen de vérifier / configurer la façon dont GDM ferme ses enfants?
systemd's
contrôle - systemd
est pid 1
- mais Chrome exécute son script wrapper dans un sous-shell et appelle ensuite les processus enfants. Pourtant, il fera ce dont il a besoin pour le tuer zygotes
tant que votre système est correctement configuré. Utilisez-vous l'une de ces solutions d'espace temporaire pour Chrome que vous trouverez recommandées dans le wiki Arch?
gnome-session
.