Ich fange an zu vermuten, dass Ubuntu den laufenden Anwendungen nicht mitteilt, dass es heruntergefahren wird, damit sie ordnungsgemäß beendet werden, sondern sie zum Beenden zwingt.
Wenn ich chrome beim Herunterfahren offen lasse, heißt es, dass es beim letzten erneuten Öffnen nach dem Booten nicht richtig geschlossen wurde, fragt LibreOffice nicht, ob ich mein Dokument speichern möchte und ich erstelle eine Anwendung, die Code ausführen muss Dies ist jedoch nicht zulässig, wenn der Computer heruntergefahren wird.
Wie ich es verstanden habe, wird SIGTERM zuerst an alle Prozesse gesendet, damit diese ordnungsgemäß beendet werden können. Wenn SIGKILL nicht beendet wird, wird SIGKILL gesendet, um sie zum Beenden zu zwingen. Es scheint, dass Ubuntu entweder überhaupt kein SIGTERM sendet oder den Anwendungen nicht genügend Zeit gibt, bevor SIGKILL gesendet wird.
Kann ich das irgendwie beheben?
Ich verwende Ubuntu 16.04, aber das Problem bestand auch in 15.10. Ich kann nicht sagen, ob es dort vorher war, da ich mit Ubuntu angefangen habe, als 15.10 die neueste Version war.
Bearbeiten: Ich verwende Unity und fahre meinen Computer herunter, indem ich das Zahnrad in der oberen rechten Ecke drücke und Herunterfahren auswähle, obwohl das Problem dasselbe ist, wenn ich sudo halt
im Terminal arbeite.
Bearbeiten: Ich beobachte das gleiche Verhalten, wenn ich mich nur auslogge. Ich vermute, dass das Signal beim Abmelden gesendet werden soll und daher das Problem beim Herunterfahren und Abmelden auftritt.
Antworten:
Leider funktioniert es so nicht ganz. Viele dieser Programme, die tatsächlich einen Signal-Handler haben, blockieren das Signal nicht, um einen Bestätigungsdialog anzuzeigen. Die Signalverarbeitung ist häufig minimal oder fehlt.
Sie können es ganz einfach ausprobieren, ohne den Computer herunterfahren zu müssen. Senden Sie SIGTERM einfach an Ihren laufenden Firefox- oder LibreOffice-Prozess:
Normalerweise fragt Firefox Sie möglicherweise, ob Sie das Programm wirklich schließen möchten. Außerdem dauert es in der Regel eine Weile, bis der Vorgang beendet ist, insbesondere wenn er über einen längeren Zeitraum ausgeführt wurde und mehr als 1 GB RAM beansprucht. Nach dem Schließen des letzten Fensters dauert es oft eine Minute, bis der Vorgang beendet ist. Nichts davon passiert, wenn Sie SIGTERM senden. Der Vorgang wird sofort abgebrochen.
In einigen Desktop-Umgebungen werden jedoch alle geöffneten Fenster vor dem Herunterfahren geschlossen. Im Gegensatz zu SIGTERM entspricht das programmgesteuerte Schließen eines Fensters dem Klicken auf die X-Schaltfläche dieses Fensters oder Alt+ F4. Dies ist auch, was das Skript in der anderen Antwort tut - es verwendet wmctrl, um alle offenen Fenster ordnungsgemäß zu schließen.
Wenn ein Fenster geschlossen wird, ist das Programm nicht in Eile, und es kann alles in diesem Fenster schließen, z. B. geöffnete Registerkarten, und es kann auch ein Dialogfenster anzeigen, wenn nicht gespeicherte Arbeit vorhanden ist. Sobald alle offenen Fenster einer Anwendung geschlossen wurden, wird der Vorgang in der Regel kurz danach beendet.
Das hängt also von Ihrer Desktop-Umgebung ab (vorausgesetzt, Sie verwenden Ihre Desktop-Umgebung zum Herunterfahren und nicht
sudo poweroff
). Beispielsweise sollte KDE warten, bis geöffnete Fenster geschlossen sind, bevor es beendet wird, während MATE dies nicht tut.Fazit: Schließen Sie alle geöffneten Fenster vor dem Herunterfahren manuell. Oder verwenden Sie eine Desktop-Umgebung, die darauf wartet, dass alle Fenster geschlossen werden.
quelle
Für das, was es wert ist, habe ich vor einiger Zeit dieses Verfahren im Manjaro-Forum gefunden:
}
Sie können es in einem eigenen Skript aufrufen, um alle offenen Apps vor dem Herunterfahren (oder Neustart) zu schließen.
Das einzige Problem ist, dass es für Xfce erstellt wurde und Änderungen erfordert, die von Unity DE eingeführt werden. Eine kleine Hilfe von jemandem, der sich besser auskennt, wäre hilfreich, um das OP-Problem zu lösen.
quelle
Tatsächlich ist auf Ask ein Teil des Skripts verfügbar, der alle Fenster schließt und nicht von einem bestimmten DE abhängt. 2. und 3. Antworten sind besonders nützlich. Mit nur wenigen Zeilen mehr und durch Erstellen eines Launchers in der Kontrollleiste oder auf dem Desktop können Sie das ordnungsgemäße Herunterfahren erreichen, das in dem DE funktioniert, das Sie verwenden.
So schließen Sie alle geöffneten Fenster ordnungsgemäß
quelle