Porady Admina: dmesg
Ostatnia aktualizacja: 9 października 2023, 10:50
W dwunastej odsłonie cyklu Porady Admina przeanalizujemy program dmesg.
dmesg (ang. diagnostic message) – polecenie systemowe rodziny Unix wyświetlające bufor warstwy jądra. Umożliwia m.in. wyświetlenie komunikatów startowych ładowania systemu. dmesg służy do sprawdzenia bufora warstwy jądra (kernel ring buffer) lub sterowania nim. Domyślnym działaniem jest wyświetlenie wszystkich wiadomości z bufora warstwy jądra.
Mówiąc potocznie, polecenie dmesg pozwala zajrzeć do ukrytego świata procesów startowych Linuksa.
Program dmesg jest częścią pakietu narzędzi o nazwie 'util-linux’ i powinien być domyślnie zainstalowany w większości dystrybucji Linux i BSD.
Składnia
dmesg OPCJE
Opcje
-C, –clear Czyści zawartość bufora.
-c, –read-clear Czyści zawartość bufora po jego pierwszym wyświetleniu.
-D, –console-off Wyłącza wyświetlanie wiadomości w konsoli.
-d, –show-delta Wyświetla znacznik oraz różnicę czasu pomiędzy komunikatami. Jeśli opcja ta jest używana razem z –notime, to wypisywana jest tylko różnica czasu.
-E, –console-on Włącza wyświetlanie wiadomości w konsoli.
-e, –reltime Wyświetla czas lokalny i różnicę czasu w formacie czytelnym dla ludzi. Zauważ, że konwersja do czasu lokalnego może być niedokładna.
-F, –file plik Odczytuje komunikaty syslog z podanego pliku. Zauważ, że -F nie obsługuje wiadomości w formacie kmsg. Obsługiwany jest wyłącznie stary format syslog.
-f, –facility lista Ogranicza wyjście do podanej listy (z elementami oddzielonymi przecinkami) zagadnień.
-H, –human Włącza wyświetlanie czytelne dla ludzi. Zob. również –color, –reltime i –nopager.
-J, –json Use JSON output format. The time output format is in „sec.usec” format only, log priority level is not decoded by default (use –decode to split into facility and priority), the other options to control the output format or time format are silently ignored.
-k, –kernel Wyświetla wiadomości jądra.
-L, –color[=kiedy] Koloryzuje wynik. Opcjonalnym argumentem kiedy może być auto, never (nigdy) lub always (zawsze). Gdy nie poda się argumentu kiedy, domyślnym ustawieniem jest auto. Kolory mogą być wyłączone, aktualne wbudowane ustawienie domyślne pokaże opcja –help.
-l, –level lista Ogranicza wyjście do podanej listy (z elementami oddzielonymi przecinkami) poziomów.
-n, –console-level poziom Ustawia poziom, na którym odbywa się wyświetlanie komunikatów na konsoli. Za poziom należy podstawić numer poziomu lub skróconą nazwę poziomu.
-n, to dmesg nie wyświetla ani nie czyści bufora warstwy jądra.
-P, –nopager Nie przekazuje wyjścia na program stronicujący, który jest domyślnie włączony dla opcji –human output.
-p, –force-prefix Dodaje element, poziom lub znacznik czasu do każdego wiersza komunikatu wielowierszowego.
-r, –raw Wyświetla surowy bufor wiadomości, np. nie przycina przedrostków poziomu dziennika; wszystkie znaki niedrukowalne są jednak wciąż cytowane
-S, –syslog Wymusza używanie przez dmesg interfejsu jądra syslog(2) do czytania komunikatów jądra.
-s, –buffer-size rozmiar Do odpytania bufora jądra używa bufora o podanej wielkości. Domyślnie jest to 16392 (domyślny rozmiar bufora syslog jądra wynosił początkowo 4096, 8192 od wersji 1.3.54 i 16384 od wersji 2.1.113). Jeśli użytkownik ustawił bufor jądra większy od domyślnego, to można posłużyć się tą opcją do przeglądnięcia całego bufora.
-T, –ctime Wypisuje znaczniki czasu w formie czytelnej dla człowieka.
–time-format format Wypisuje znacznik czasu w podanym formacie, którym może być ctime, reltime, delta lub iso.
-u, –userspace Wypisuje wiadomości z przestrzeni użytkownika.
-w, –follow Czeka na nowe komunikaty. Ta funkcja jest obsługiwana tylko w systemach z dającym się odczytać /dev/kmsg
-W, –follow-new Czeka i wyświetla tylko nowe wiadomości.
-x, –decode Dekoduje numery zagadnienia (ang. facility) i poziomu (priorytetu) do przedrostków czytelnych dla człowieka.
Przykłady
Polecenie dmesg umożliwia przeglądanie wiadomości przechowywanych w buforze pierścieniowym. Domyślnie musisz użyć sudo, aby użyć dmesg.
sudo dmesg
Wszystkie wiadomości z bufora są wyświetlane w oknie terminala. Ilość wiadomości jest zazwyczaj duża, można dodatkowo użyć polecenia 'less’
sudo dmesg | less
Teraz możemy przewijać wiadomości w poszukiwaniu interesujących informacji.
Kolor
Domyślnie dmesg będzie prawdopodobnie skonfigurowany do generowania kolorowego wyjścia. Jeśli tak nie jest, możesz powiedzieć dmesg, aby pokolorował dane wyjściowe za pomocą opcji -L (kolor).
sudo dmesg -L
lub
sudo dmesg --color=always
Ludzkie znaczniki czasu
Domyślnie dmesg używa notacji sygnatury czasowej sekund i nanosekund od uruchomienia jądra. Aby renderować to w bardziej przyjaznym dla człowieka formacie, użyj opcji -H (human).
sudo dmesg -H
Sygnatury czasowe czytelne dla człowieka
Jeśli nie potrzebujesz dokładności nanosekundowej, ale potrzebujesz znaczników czasu, które są łatwiejsze do odczytania niż domyślne, użyj opcji -T.
sudo dmesg -T
Pobierz ostatnie dziesięć wiadomości
Użyj polecenia tail, aby pobrać ostatnie dziesięć komunikatów bufora pierścienia jądra. Oczywiście możesz pobrać dowolną liczbę wiadomości. Dziesięć to tylko nasz przykład.
sudo dmesg | tail -10
Wyszukiwanie konkretnych fraz
Użyj dmesg wraz grep, aby wyszukać określone ciągi lub wzorce za pomocą opcji -i, aby zignorować wielkość liter pasujących. Nasze wyniki będą zawierać „usb” i „USB” oraz wszelkie inne kombinacje małych i wielkich liter.
sudo dmesg | grep -i usb
Wszystkie informacje o programie dmesg uzyskasz poleceniami:
dmesg -h
man dmesg
Fajny cykl porad admina, zwłaszcza dla początkujących.
Przydałby się opis grub-rescue z zastosowaniem chroot (arch-chroot)
zwłaszcza po wpadce z updatem w EndeavourOS po ktorym padł grub.
Mi padły dwa laptopy zaszyfrowane. Po naprawie zostały mi dziwne problemy z openvpn.
Pozdrawiam. ArO.