Ich versuche, ArchLinux mit GNOME Shell ordnungsgemäß herunterzufahren / neu zu starten. Wenn ich jetzt nach dem Herunterfahren frage, wird es sofort heruntergefahren, ohne dass geöffnete Programme Zeit zum ordnungsgemäßen Schließen / Speichern geöffneter Dateien haben. Wenn ich Chrome neu starte (zum Beispiel), wird mir dadurch mitgeteilt, dass die Sitzung nicht ordnungsgemäß geschlossen wurde. Durch das Lesen im Internet habe ich erfahren, dass systemd beim Herunterfahren von Prozessen zuerst ein SIGTERM
gefolgt von sendet, SIGKILL
wenn der Prozess nicht geschlossen wird mit einer bestimmten Auszeit. Allerdings stelle ich fest, dass auf meinem System SIGKILL
sofort danach gesendet wird SIGTERM
und ich vermute, dass dies die Ursache für einen nicht ordnungsgemäßen Programmabbruch ist.
Ich habe eine Dokumentation gefunden, in der (wenn ich sie richtig gelesen habe) angegeben ist, dass das Zeitlimit vor dem Senden SIGKILL
per TimeoutStopSec=
Option festgelegt werden kann. Das Senden SIGKILL
kann auch SendSIGKILL=
optional deaktiviert werden . Aber ich kann nicht finden, wo ich diese Optionen konfigurieren soll ... Gibt es eine Konfigurationsdatei zum Herunterfahren / Neustarten des Systems, in der ich diese Optionen festlegen kann?
BEARBEITEN:
Ich habe einige Tests gemacht und zwei interessante Dinge entdeckt:
- Wenn ich Chrome auf diese Weise manuell schließe
killall -SIGTERM chrome
, wird nicht beanstandet, dass es beim nächsten Neustart nicht ordnungsgemäß geschlossen wurde. Wenn ich es stattdessen so schließekillall -SIGKILL chrome
, wird es sich beschweren. Dies sagt mir, dass Chrom SIGTERM richtig handhabt. - Wenn ich die Ausgabe meines Herunterfahrvorgangs betrachte, druckt systemd
Sending SIGTERM...
sofort, gefolgt vonSending SIGKILL...
Laut dem folgenden Kommentar behandelt systemd nur seine Prozesse. Also in meinem Fall GDM. Dies sagt mir, dass das Problem sein könnte:
- Entweder schließt GDM die untergeordneten Prozesse (z. B. Chrome) nicht korrekt (z. B. indem SIGTERM an sie gesendet wird).
- oder systemd sendet GDM eine SIGKILL-Nachricht zu früh, damit es nicht die Zeit hat, seine untergeordneten Elemente ordnungsgemäß zu schließen.
Gibt es eine Möglichkeit zu überprüfen / konfigurieren, wie GDM seine Kinder tatsächlich schließt?
systemd's
Kontrolle sein - systemd
ist pid 1
-, aber Chrome führt sein Wrapper-Skript in einer Subshell aus und ruft anschließend untergeordnete Prozesse auf. Dennoch wird es tun, was es braucht, um es zu beenden zygotes
, solange Ihr System richtig konfiguriert ist. Verwenden Sie eine der im Arch-Wiki empfohlenen temporären Lösungen für Chrome?
gnome-session
.