Tutoriel Linux

Dmesg w systemie Linux: odczytaj komunikaty jądra w przypadku awarii dysku lub urządzenia

Débutant6 min de lecture

Znika dysk USB, rozłącza się karta sieciowa, dysk SSD ulega awarii, a komputer wyświetla błąd zaraz po uruchomieniu? Zanim losowo zmienię konfigurację, prawie zawsze sprawdzam komunikaty jądra.

Pod Linuksem, dmesg Pozwala szybko odczytać te komunikaty. Nie jest to magiczne narzędzie, ale często dostarcza pierwszej przydatnej wskazówki: błąd wejścia/wyjścia, zresetowane urządzenie USB, brak oprogramowania układowego, wadliwy sterownik lub niestabilne połączenie sieciowe.

W tym przewodniku pokażę Ci, jak używać dmesg Mówiąc ściśle, skrzyżuj to z journalctl -kfiltruj przydatne linijki i unikaj fałszywego pomysłu zmiany opcji systemowej przed zrozumieniem przekazu.

Tux bada komunikaty jądra Linuxa na dysku, urządzeniu USB i serwerze.
dmesg często daje pierwszą wskazówkę w przypadku awarii dysku, urządzenia USB lub interfejsu sieciowego.

Co właściwie wyświetla dmesg

dmesg Wyświetla bufor komunikatów jądra Linuksa. Mówiąc prościej, znajdziesz tam zdarzenia niskiego poziomu: wykrywanie sprzętu, sterowniki, błędy dysku, USB, sieć, ACPI, oprogramowanie układowe, pamięć, montowanie urządzeń itp.

Na nowoczesnych komputerach niektóre z tych komunikatów są również widoczne w logu systemd. Dlatego radzę mieć pod ręką oba polecenia: dmesg do szybkiego czytania, journalctl -k dla bardziej przejrzystego odczytu dziennika systemowego.

dmesg

W niektórych dystrybucjach odczyt może wymagać uprawnień administratora. Jeśli pojawi się błąd uprawnień, spróbuj ponownie. sudo.

sudo dmesg

Strona podręcznika dmesg Zawiera szczegółowe informacje o wszystkich opcjach. Do rutynowej diagnostyki wystarczy już kilka poleceń.

Przeczytaj ostatnie linijki bez utonięcia

Pierwszą rzeczą, którą należy zrobić, to nie wyświetlać 800 wierszy naraz. Gdy problem już wystąpi, zacznij od końca logu jądra.

sudo dmesg -T | tail -n 80

Opcja -T Sprawia, że ​​daty są bardziej czytelne. Należy pamiętać, że chociaż ten format jest wygodny do szybkiego czytania, nie zastępuje dogłębnej analizy gazet, jeśli porównujesz bardzo konkretne wydarzenia. W tym celu journalctl pozostaje wygodniejszy.

Można również wyświetlać tylko ostrzeżenia i błędy:

sudo dmesg -T --level=err,warn

Jeśli polecenie nic nie zwróci, niekoniecznie jest to zły znak. Oznacza to po prostu, że jądro nie zarejestrowało żadnych ostatnich błędów ani ostrzeżeń w tym buforze.

Filtrowanie problemu z USB, dyskiem lub siecią

Prawdziwa oszczędność czasu pojawia się, gdy filtrujesz. Jeśli szukasz odpowiedzi na pytanie, dlaczego dysk USB nie chce się zamontować, dlaczego dysk twardy działa nieprawidłowo lub dlaczego karta sieciowa się resetuje, nie czytaj wszystkiego. Szukaj słów odpowiadających sprzętowi.

sudo dmesg -T | grep -iE 'usb|sda|sdb|nvme|ata|błąd|niepowodzenie|resetowanie'

Dla porządku dodam, że linie, na które warto zwrócić uwagę, zazwyczaj nie wymagają wyjaśnień: Błąd we/wy, nastawić, nieudane polecenie, żądanie_aktualizacji_blk, odczytaj błąd, napisz błądJeżeli widzisz tego typu wiadomość wielokrotnie, nie zaczynaj od przepisania jej. /etc/fstabNajpierw sprawdź kabel, obudowę USB, zasilacz, a następnie stan dysku.

W przypadku urządzenia USB należy odwołać się do poleceń już podanych w przewodniku na Porty USB w systemie Linux lub ten na montaż klucza USB. dmesg mówi ci, co obserwuje rdzeń, ale lsusb, lsblk I znaleźć pomagają zrozumieć, co jest faktycznie wykrywane i montowane.

lsblk -o NAZWA,ROZMIAR,STYLF,ETYKIETA,ID UUID,PUNKTY MONTOWANIA
znaleźć
lsusb

W przypadku problemu z siecią poszukaj nazwy interfejsu lub terminów takich jak połączyć, przemianowany, oprogramowanie sprzętowe, przekroczenie limitu czasu, w dół, w góręJeżeli temat dotyczy głównie nasłuchiwania portów TCP, przejdź do ss lub netstat, ponieważ dmesg nie zastępuje inwentaryzacji sieci.

Podczas podłączania sprzętu postępuj zgodnie z komunikatami

Gdy urządzenie rozłącza się sporadycznie, najłatwiej jest monitorować wiadomości na żywo. Otwórz terminal, uruchom polecenie, a następnie podłącz dysk, dysk USB lub kartę sieciową.

sudo dmesg -wH

-w śledź nowe wiadomości. -H Zwiększa czytelność danych wyjściowych. Jeśli wolisz pozostać w logu systemd, użyj:

sudo journalctl -k -f

Strona podręcznika dziennikctl Jest to przydatne, jeśli chcesz zawęzić wyszukiwanie według uruchomienia, priorytetu lub jednostki. W przypadku prostej awarii sprzętu, monitorowanie na żywo często wystarcza, aby sprawdzić, czy jądro wykryło gałąź, a następnie błąd.

Porównaj z journalctl dla ostatniego uruchomienia

dmesg To szybkie, ale nie poprzestaję na tym, jeśli problem dotyczy serwera lub powtarza się po restarcie. Dziennik systemd pozwala na ponowne odczytanie komunikatów jądra z bieżącego rozruchu, z własnymi filtrami.

sudo journalctl -k -b --no-pager
sudo journalctl -k -b -p warning..alert --no-pager

Pierwsze polecenie wyświetla komunikaty jądra z bieżącego procesu rozruchu. Drugie przechowuje tylko ostrzeżenia, błędy i alerty. Jest to przydatne po ponownym uruchomieniu, gdy nie udało się zamontować systemu, interfejs sieciowy nie jest zamontowany poprawnie lub gdy sterownik zgłasza problem podczas rozruchu.

Jeśli właśnie dokonałeś modyfikacji /etc/fstabNie restartuj tylko po to, żeby sprawdzić. Najpierw przetestuj montaż i sprawdź, czy nie ma błędów. Przewodnik fstab pod Linuksem Ten punkt musi zostać wyjaśniony szczegółowo, ponieważ uszkodzona linia może zablokować rozruch szybciej, niż możesz sobie wyobrazić.

sudo mount -a
znaleźć
sudo journalctl -k -b -p warning..alert --no-pager

Wiedza o tym, kiedy komunikat wskazuje na rzeczywisty problem ze sprzętem

Izolowana linia w dmesg To nie zawsze wystarcza, aby wyciągnąć wnioski. Urządzenie USB może się zresetować raz, bez poważniejszych konsekwencji. Jednak błąd powtarzający się przy każdej kopii, dysk, który naprzemiennie się odłącza i podłącza, lub powtarzające się błędy wejścia/wyjścia należy traktować poważnie.

W tym przypadku wykonuję trzy sprawdzenia przed dotknięciem konfiguracji:

  • zmień kabel, port USB lub zasilacz, jeśli urządzenie jest zewnętrzne;
  • sprawdź, czy dysk jest prawidłowo zidentyfikowany lsblk I blkid ;
  • Sprawdź status SMART, czy jest to dysk twardy czy dysk SSD.
lsblk -o NAZWA, ROZMIAR, MODEL, NUMER SERYJNY, STYL F, PUNKTY MONTAŻU
sudo blkid
sudo smartctl -a /dev/sdX

Zastępować /dev/sdX przez właściwy dysk. Nie kopiuj tego polecenia bezmyślnie na maszynę z wieloma dyskami. Jeśli nie masz pewności, zatrzymaj się na lsblk i zidentyfikuj model, rozmiar i punkt mocowania zanim pójdziesz dalej.

Przed poprawą zanotuj dokładny opis błędu.

Najlepsze wykorzystanie dmesgCelem nie jest znalezienie magicznego rozwiązania. Chodzi o wychwycenie konkretnego błędu przed podjęciem działań. Skopiuj kilka linijek tekstu wokół wiadomości, zanotuj godzinę, urządzenie, którego dotyczy problem, oraz czynność, która go wywołała.

sudo dmesg -T | tail -n 120 > core-diagnostic.txt
sudo journalctl -k -b -p warning..alert --no-pager >> core-diagnostic.txt

Dopiero wtedy możesz zdecydować: który kabel wymienić, który dysk wykonać kopię zapasową, który sterownik sprawdzić, którą regułę fstab poprawić, jakie oprogramowanie sprzętowe zainstalować lub którą usługę monitorować. Ten krok wydaje się prosty, ale pozwala uniknąć wielu absurdalnych diagnoz, zwłaszcza w przypadku sporadycznych usterek.

Jeśli administrujesz maszyną zdalną, zachowaj jeszcze większą ostrożność. Błąd dysku lub sieci wykryty w jądrze może w końcu uniemożliwić Ci dostęp. Utrzymuj otwartą sesję, w miarę możliwości zapewnij dostęp do konsoli i nie restartuj systemu, dopóki nie zrozumiesz, co jądro próbuje Ci przekazać.