dmesg — den Kernel-Ring-Buffer auslesen und Hardware-Probleme diagnostizieren

Praxis-Guide zu dmesg: Kernel-Meldungen zu Hardware, Treibern und OOM-Events lesen, live verfolgen, nach Level filtern und Zeitstempel formatieren.

dmesg liest den Kernel-Ring-Buffer aus – jenen begrenzten Speicherbereich, in dem der Linux-Kernel seine Meldungen zu Hardware-Erkennung, Treiber-Initialisierung, USB-Events, Plattenfehlern und dem OOM-Killer ablegt. Wenn ein Gerät nicht erkannt wird, das System sporadisch hängt oder ein Prozess unerklärlich abgeschossen wurde, ist dmesg meist die erste Anlaufstelle. Auf modernen Distributionen ist der Buffer aus Sicherheitsgründen oft nur noch mit sudo lesbar (kernel.dmesg_restrict). Dieser Guide zeigt dir, wie du Meldungen lesbar formatierst, gezielt filterst und live mitverfolgst.

Grundlegende Verwendung

dmesg — Zeigt alle Kernel-Meldungen aus dem Ring-Buffer.

dmesg

dmesg | less — Blättert seitenweise durch die Kernel-Meldungen.

dmesg | less

dmesg | tail -30 — Zeigt die letzten 30 Kernel-Meldungen.

dmesg | tail -30

sudo dmesg — Zeigt Kernel-Meldungen (auf vielen Systemen nur als root lesbar).

sudo dmesg

Zeitstempel & Formatierung

dmesg -T — Zeigt lesbare Zeitstempel statt Sekunden seit dem Boot.

dmesg -T

dmesg -t — Gibt überhaupt keine Zeitstempel aus.

dmesg -t

dmesg --time-format iso — Zeigt Zeitstempel im ISO-8601-Format.

dmesg --time-format iso

dmesg -x — Dekodiert Facility und Level zu lesbaren Präfixen.

dmesg -x

dmesg --color=always — Erzwingt farbige Ausgabe (nützlich beim Pipen).

dmesg --color=always | less -R

dmesg -H — Lesbare Ausgabe mit Farben und Pager.

dmesg -H

Nach Level filtern

dmesg -l err — Zeigt nur Fehlermeldungen.

dmesg -l err

dmesg -l warn — Zeigt nur Warnungen.

dmesg -l warn

dmesg -l crit — Zeigt nur kritische Meldungen.

dmesg -l crit

dmesg -l emerg — Zeigt nur Notfallmeldungen (System unbrauchbar).

dmesg -l emerg

dmesg -l info — Zeigt nur informative Meldungen.

dmesg -l info

dmesg -l err,warn — Zeigt Fehler und Warnungen kombiniert.

dmesg -l err,warn

dmesg -l err,crit,alert,emerg — Zeigt alle ernsthaften Meldungen.

dmesg -l err,crit,alert,emerg

Nach Facility filtern

dmesg -f kern — Zeigt nur Kernel-Meldungen.

dmesg -f kern

dmesg -f daemon — Zeigt nur Daemon-Meldungen.

dmesg -f daemon

dmesg -f user — Zeigt nur Meldungen aus dem User-Space.

dmesg -f user

dmesg -f syslog — Zeigt nur Syslog-Meldungen.

dmesg -f syslog

Live verfolgen & leeren

dmesg -w — Watch-Modus – gibt neue Kernel-Meldungen fortlaufend aus (wie tail -f).

sudo dmesg -w

dmesg -W — Verfolgen und warten – zeigt nur neue Meldungen (überspringt den bestehenden Buffer).

sudo dmesg -W

dmesg -c — Gibt den Ring-Buffer aus und leert ihn anschließend. Erfordert root.

sudo dmesg -c

dmesg -C — Leert den Ring-Buffer, ohne ihn auszugeben. Erfordert root.

sudo dmesg -C

dmesg -D — Deaktiviert die Ausgabe von Meldungen auf der Konsole.

sudo dmesg -D

dmesg -E — Aktiviert die Ausgabe von Meldungen auf der Konsole.

sudo dmesg -E

Nach bestimmten Ereignissen suchen

dmesg | grep -i error — Sucht nach Fehlermeldungen (ohne Groß-/Kleinschreibung).

dmesg | grep -i error

dmesg | grep -i 'usb' — Zeigt USB-bezogene Kernel-Meldungen.

dmesg | grep -i 'usb'

dmesg | grep -i 'eth\|ens\|enp' — Zeigt Meldungen zu Netzwerk-Schnittstellen.

dmesg | grep -i 'eth\|ens\|enp'

dmesg | grep -i 'sd[a-z]\|nvme' — Zeigt Meldungen zu Platten und Speichergeräten.

dmesg | grep -i 'sd[a-z]\|nvme'

dmesg | grep -i 'oom\|out of memory' — Prüft auf Aktivität des OOM-Killers.

dmesg | grep -i 'oom\|out of memory'

dmesg | grep -i 'segfault\|general protection' — Sucht nach Segmentation Faults und Protection-Fehlern.

dmesg | grep -i 'segfault\|general protection'

dmesg | grep -i 'firmware' — Zeigt Meldungen zum Laden von Firmware.

dmesg | grep -i 'firmware'

Praxis-Muster

dmesg -T -l err,warn — Zeigt Fehler und Warnungen mit lesbaren Zeitstempeln.

dmesg -T -l err,warn

dmesg -T | tail -50 — Zeigt die 50 jüngsten Kernel-Meldungen mit Zeitstempeln.

dmesg -T | tail -50

dmesg -Tw — Verfolgt Kernel-Meldungen mit lesbaren Zeitstempeln.

sudo dmesg -Tw

dmesg --since '1 hour ago' — Zeigt Meldungen der letzten Stunde (erfordert ein aktuelles dmesg).

dmesg --since '1 hour ago'

dmesg --until '2024-01-01 12:00' — Zeigt Meldungen bis zu einem bestimmten Zeitpunkt.

dmesg --until '2024-01-01 12:00'

dmesg -T > dmesg_$(date +%Y%m%d).log — Speichert Kernel-Meldungen mit Zeitstempeln in eine datierte Log-Datei.

dmesg -T > dmesg_$(date +%Y%m%d).log

Fazit

dmesg ist ein reines Lese-Kommando und damit weitgehend ungefährlich – die einzige Ausnahme ist dmesg -C, das den Ring-Buffer unwiderruflich leert und damit forensische Spuren vernichtet. Für die Diagnose lohnt es sich, Meldungen mit -T lesbar zu machen und mit -l err,warn auf das Wesentliche einzudampfen; dmesg -w folgt Ereignissen live, etwa beim Einstecken eines USB-Geräts. Auf Systemen mit kernel.dmesg_restrict=1 brauchst du sudo. Inhaltlich überschneidet sich dmesg stark mit journalctl -k, das dieselben Kernel-Meldungen persistent und über Boots hinweg vorhält – für Langzeit-Analysen oft die bessere Wahl.

Verwandte Kommandos

  • journalctl – das systemd-Journal abfragen, inklusive der Kernel-Meldungen via journalctl -k
  • strace – Systemaufrufe eines Prozesses verfolgen, wenn dmesg auf ein Problem hindeutet
  • lsof – offene Dateien und Geräte auflisten, ergänzend zur Hardware-Diagnose