Wie kann ich herausfinden, warum das Anhalten manchmal fehlschlägt?

17

Es kommt gelegentlich zu einem Absturz beim Anhalten. Wenn es abstürzt, friert das System mit einem schwarzen Bildschirm ein und bleibt eingeschaltet, ohne anzuhalten. Dadurch muss ich den Netzschalter gedrückt halten, bis das System heruntergefahren ist.

Ein Einstellungsunterschied, den ich von den meisten Menschen habe, ist, dass ich nicht die Option verwende, die Sie anhalten lässt, wenn der Laptopdeckel geschlossen ist. Das Öffnen und Schließen des Laptop-Deckels hat also keine Auswirkungen. Ich drücke gerne manuell auf Suspend. Könnte diese Präferenzänderung die Ursache sein?

Wie kann ich nach Ursachen für den Absturz suchen, da beim Absturz keine Fehler angezeigt werden?

Isaac
quelle

Antworten:

17

Ich glaube nicht, dass die Einstellung, die Sie erwähnen, etwas damit zu tun hat.

Überprüfen /var/log/pm-suspend.logSie, ob es einen Hinweis gibt.

Diese Probleme sind in der Regel auf bestimmte Prozesse zurückzuführen, die verhindern, dass das System angehalten wird.

Tun

dmesg -T|grep Freez -A4

und suche nach diesen Einträgen:

--
[sun mar  3 15:19:48 2013] Freezing user space processes ... 
[sun mar  3 15:20:08 2013] Freezing of tasks failed after 20.01 seconds (3 tasks refusing to freeze, wq_busy=0):
[sun mar  3 15:20:08 2013] mount.nfs       D e8631aa0     0  5518   5517 0x00800004
[sun mar  3 15:20:08 2013]  e8631b10 00000086 f7bc0e00 e8631aa0 c1053cb4 c1809020 c192ee00 c192ee00
--

Überprüfen Sie die Zeitstempel, um festzustellen, welche der gemeldeten Probleme mit Ihrem Versuch, den Vorgang auszusetzen, zusammenhängen. In diesem Fall mount.nfsverursacht dies die Probleme.

Fügen Sie nun ein Skript ein /etc/pm/sleep.d/. Die Skripte werden beim Anhalten und Fortsetzen ausgeführt. Der Dateiname sollte mit der Bestellnummer 00-49 für Benutzerskripte beginnen (weitere Einzelheiten siehe man pm-suspend).

Das Skript könnte so aussehen

#!/bin/sh
(killall -9 mount.nfs; exit 0)

mit entsprechenden Einträgen für andere Prozesse, die ggf. Probleme verursacht haben.

Klammer und exit 0ist ein Trick: Wenn der Prozess nicht gefunden wird, killallwird er mit dem Beendigungscode 1 beendet, wodurch die gesamte Unterbrechung abgebrochen wird. Das Obige wird killallin einer Sub-Shell ausgeführt, die mit 0 beendet wird.

Wenn Sie Probleme haben, überprüfen Sie, ob /var/log/pm-suspend.logder Versuch, das Skript anzuhalten und auszuführen, protokolliert wird.

Carl
quelle
Ich brauchte auch eine andere Zeile: (killall -9 mount.nfs; exit 0), weil es manchmal nur mit SIGUP nicht funktioniert.
Juanin
@Juanin: -9ist besser, ich weiß nicht warum ich das erst überhaupt gemacht habe -1, wird jetzt bearbeitet.
Carl
Ich frage mich, wie viel Prozent der Zeit das Problem ein Live-Netzwerk-Mount ist (wie hier gezeigt). Das war auch mein Problem - aber es war sshfsstattdessen nfs.
15.
Wenn es mehr als eine Aufgabe gibt, die sich weigert, einzufrieren, kann dies an diesem Fehler liegen: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1676912
mhellmeier
Funktioniert diese Methode auch in Ubuntu 18.04 .. ??
Ramesh-X