Jak debugować problem z zawieszeniem?


11

Kiedyś miałem Fedorę 14 zainstalowaną na tym HP Compaq 610, a funkcja zawieszenia działała dobrze. Teraz, gdy zainstalowałem Scientific Linux 6.1 zawieszenie nie działa. Jak to debugować / naprawić?


Czy to jest zawieszenie powłoki (<kbd> Cntl-z </kbd>) czy system operacyjny (uśpiony lub hibernowany)?
Arcege

@Arcege: Zakładam, że miał na myśli zawieszenie ACPI, ponieważ stało się to obecnie tak powszechnym problemem.
JM Becker

Odpowiedzi:


9

Istnieje wiele sposobów obsługi funkcji zawieszenia i hibernacji, wiele starych metod jest przestarzałych. Utrudniło to poszukiwanie rozwiązań, ponieważ wydaje się, że każde rozwiązanie jest całkowicie niezwiązane z następnym. Powiedziawszy to ...

Metoda obecnie zalecana, zalecana na stronie http://pm-utils.freedesktop.org/wiki/ , powinna być dostępna dla najnowszych dystrybucji. Najpierw sprawdzę, czy masz pm-utilszainstalowany i czy zawarte w nim polecenia działają zgodnie z oczekiwaniami.

Sprawdź, czy pakiet jest zainstalowany, wpisz to polecenie w terminalu

rpm -qa | grep pm-utils

To powinno wypisać zainstalowaną wersję. Jeśli nie otrzymasz oczekiwanego wyniku, musisz zainstalować pakiet.

sudo yum install pm-utils

Po zweryfikowaniu sprawdź swoją zdolność do zawieszenia.

sudo pm-suspend

Jeśli nie zawieszasz i nie otrzymujesz danych wyjściowych, sprawdź ostatnie wyjście dmesg

dmesg | tail -50

To powinno pomóc w rozpoczęciu pracy, gdy zdobędziesz jakieś wskazówki, znacznie łatwiej pójdziesz dalej szlakiem. Odpowiedz z komentarzami na temat twoich wyników, mogę przeprowadzić cię przez resztę.


Zainstalowałem nawet pm-utils-devel. pm-suspend z użytkownikiem root robi to samo, co z normalnym użytkownikiem, gdy kliknie w GNOME / menu-> zawieszenie-> nic, maszyna po prostu mówi „sieć jest wyłączona”, a następnie tylko czeka i czeka itd. mogę nie zaczynaj niczego po tym, jak próbuję zawiesić. Zobaczę dmesg później, dziękuję!
LanceBaynes

dmesgWyjście powie, co dzieje się za sceną. Co ważniejsze, co w szczególności może zawieść. O i BTW, nie potrzebujesz pakietu deweloperskiego. Potrzebujesz ich tylko podczas kompilacji kodu, więc możesz je wyczyścić. Stąd jest wiele kierunków, po prostu nie wysyłam was do szczekania niewłaściwego drzewa.
JM Becker

1
@LanceBaynes próbowałeś uruchomić pm-suspendpolecenia z powłoki, a nie z menu GNOME? Spróbuj echo -n "mem" >/sys/power/statejako root. Również jeśli używasz acpi, możesz acpi_listensprawdzić, jakie zdarzenia są generowane, np. Po zamknięciu pokrywy.

WOW, wtf? I "echo -n" mem "> / sys / power / state" z użytkownikiem root, a mój faktycznie zawieszony !!!! ŁAŁ. Jedyny problem polega teraz na tym, że kiedy wykonuję takie zawieszenie, gnome-wygaszacz ekranu nie uruchamia się i pozostawia mi odblokowany komputer. Jak obejść ten problem? Jak mogę stworzyć skrypt / cokolwiek, aby normalny użytkownik mógł również użyć tego rodzaju zawieszenia? nie tylko użytkownik root? - i jeszcze jedno: DZIĘKUJĘ!
LanceBaynes

2
@LanceBaynes: Teraz działa? ... Wierzyłem, że tego rodzaju „niespodzianka” Przerwa / Naprawa zdarzyła się tylko z Widoze. Niestety na chwilę przestałem w to wierzyć. Ale ... z drugiej strony, zdarza się to rzadziej! Twoje zawieszenie działa, więc to świetna wiadomość!
JM Becker,

8

Spróbuj tego jako root:

PM_DEBUG=true pm-suspend

Następnie sprawdź /var/log/pm-suspend.logwskazówki, co może pójść nie tak.

Jeśli możesz zawiesić, ale nie wznowić, na stronie wiki Ubuntu znajduje się dobry artykuł na temat debugowania tego problemu.


2

Jeśli chcesz uzyskać tylko po zawieszeniu / wznowieniu systemu, możesz spróbować:

cat /var/log/syslog | grep 'systemd-sleep' | grep "Suspending\|resumed";
Feb  7 10:44:23 dmatej-lenovo systemd-sleep[19900]: Suspending system...
Feb  7 10:44:33 dmatej-lenovo systemd-sleep[19900]: System resumed.
Feb  7 10:45:35 dmatej-lenovo systemd-sleep[20707]: Suspending system...
Feb  7 12:58:39 dmatej-lenovo systemd-sleep[20707]: System resumed.
Feb  7 14:42:55 dmatej-lenovo systemd-sleep[24690]: Suspending system...
Feb  7 16:31:57 dmatej-lenovo systemd-sleep[24690]: System resumed.

1

Jak sugeruje Mika, jako root:

PM_DEBUG=true pm-suspend

Szczegóły w:

/var/log/pm-suspend.log

W tym przypadku szukasz miejsca

[...] service [servicename] suspend suspend success

kończy się i

[...] service [servicename] suspend resume success

zaczyna się. Gdzieś pośrodku możesz znaleźć błąd zwracania połączeń, w którym to momencie zawieszenie jest wstrzymane. W takim przypadku możesz zawiesić wycofywanie zmian. Dowiedz się, jakie zgłoszenie serwisowe powoduje błąd, otwórz go w vi i spójrz na to.

Miałem ten sam problem, gdy po zainstalowaniu xboxdrvna Ubuntu 12.04 wywołanie w regule /etc/pm/sleep.d/próbowało zatrzymać usługę, która nigdy nie została uruchomiona lub nie istniała, w tym przypadku xboxdrv. Okazuje się, że nigdy nie można go było uruchomić, ponieważ nie było /lib/modules/uinput.komodułu, ponieważ moduł ten został scalony z jądrem. Spowodowało to, że instrukcja case /etc/pm/sleep.d/xboxdrvzgłasza błąd, gdy pasuje do „zawiesić” połączenie service xboxdrv stop. Przygotowanie linii z #pominięciem instrukcji kosztem odłączenia i ponownego podłączenia kontrolera po zawieszeniu, a następnie wznowieniu.


Nie mam żadnych błędów w dzienniku debugowania po uruchomieniu tego, ale magicznie zaczęło działać ponownie ;-) Zastanawiam się, czy to trwałe rozwiązanie ...
Wirone
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.