dmesg

Wyświetla komunikaty bufora pierścieniowego jądra (kernel ring buffer).

dmesg wyświetla zawartość bufora pierścieniowego jądra (kernel ring buffer) — czyli komunikatów, które jądro Linuksa zapisuje od momentu startu systemu. Znajdziesz tam informacje o wykryciu sprzętu, podłączeniu pendrive’a, problemach z dyskiem, sterownikach, a także o tym, że OOM killer właśnie ubił Twój proces. To pierwsze miejsce, do którego zaglądasz, gdy coś się dzieje na poziomie sprzętu albo jądra, a logi aplikacji milczą.

Składnia i najważniejsze opcje

Podstawowe wywołanie wygląda tak: dmesg [opcje]

  • -H, --human — czytelny dla człowieka format, z kolorami i automatycznym pagerem (jak less).
  • -T, --ctime — zamienia sekundy od startu na normalne daty i godziny.
  • -w, --follow — czeka na nowe komunikaty i dopisuje je na bieżąco (jak tail -f). Wymaga czytelnego /dev/kmsg.
  • -l, --level — filtruje po poziomie ważności, np. --level=err,warn.
  • --facility — filtruje po źródle komunikatu, np. --facility=daemon.
  • -k, --kernel — pokazuje tylko komunikaty jądra (pomija userspace).
  • -x, --decode — rozszyfrowuje facility i poziom do czytelnych nazw.
  • -C, --clear — czyści bufor pierścieniowy jądra.

Przykłady użycia

  • dmesg -H — najwygodniejszy start: czytelny widok z paginacją, idealny do przeglądania.
  • dmesg -T --level=err,warn — same błędy i ostrzeżenia, z ludzkimi datami. Świetne do szybkiej diagnozy.
  • dmesg -w — podłącz pendrive albo dysk USB i obserwuj na żywo, jakie urządzenie wykrył system (np. /dev/sdb).
  • dmesg | grep -i error — klasyk: filtrowanie po słowie kluczowym, gdy szukasz konkretnego problemu.
  • dmesg -T | grep -i oom — sprawdzasz, czy to przypadkiem OOM killer zabił Ci proces przez brak pamięci.

Częste błędy i pułapki

Na nowszych dystrybucjach (od kernela 4.x z włączonym dmesg_restrict) zwykły użytkownik dostanie Operation not permitted. Wtedy potrzebujesz sudo dmesg. Druga pułapka: domyślne timestampy to sekundy od startu systemu, nie zegar — bez -T łatwo źle zinterpretować, kiedy coś się stało. Pamiętaj też, że po -T czasy bywają nieco nieprecyzyjne po SUSPEND/RESUME, bo źródło czasu logów nie jest aktualizowane.

Bufor jest pierścieniowy i ma skończony rozmiar — starsze wpisy wypadają, gdy nazbiera się nowych. Po dmesg -C nie odzyskasz wyczyszczonych komunikatów, więc nie czyść bufora w środku diagnozy. Na koniec: dmesg żyje w pamięci i znika po restarcie. Jeśli chcesz historię między bootami, sięgnij po journalctl -k.

Powiązane komendy: journalctl, tail, less, syslog, logger, lsblk.