Das dmesg (display message oder diagnostig message) wird verwendet, um Nachrichten aus dem Kernel-Ringpuffer anzuzeigen. Der Kernel-Ringpuffer ist ein spezieller Speicherbereich, in dem der Linux-Kernel Meldungen speichert, die während des Systemstarts und während des Betriebs generiert werden. Diese Meldungen umfassen Informationen zu Hardwareerkennung, Treibern, Fehlern, Warnungen und anderen wichtigen Systemereignissen.
Syntax
dmesg [OPTIONS]
dmesg --clear
dmesg --read-clear [OPTIONS]
dmesg --console-level level
dmesg --console-on
dmesg --console-off-C, --clear Löscht den Kernel-Ringpuffer.
-c, --read-clear Gibt den Inhalt des Ringpuffers aus und löscht ihn danach.
-D, --console-off Deaktiviert die Ausgabe von Nachrichten auf der Konsole.
-E, --console-on Aktiviert die Ausgabe von Nachrichten auf der Konsole.
-n, --console-level level Setzt das Konsolen-Nachrichtenlevel. Nur Nachrichten auf oder über diesem Level werden auf die Konsole ausgegeben.
-s, --buffer-size size Verwendet eine bestimmte Puffergröße, um den Kernel-Ringpuffer abzufangen.
-d, --show-delta Zeigt den Zeitstempel und die Zeitdifferenz zwischen Nachrichten an.
-e, --reltime Zeigt die lokale Zeit und die Zeitdifferenz in einem menschenlesbaren Format an.
-T, --ctime Zeigt Zeitstempel in menschenlesbaren Format an. Kann bei SUSPEND/RESUME ungenau sein.
--since time Zeigt Nachrichten seit der angegebenen Zeit an.
--until time Zeigt Nachrichten bis zu der angegebenen Zeit an.
-t, --notime Unterdrückt die Anzeige von Zeitstempeln.
--time-format format Zeigt Zeitstempel im angegebenen Format an, wie z.B. ctime, reltime, delta oder iso.
-f, --facility list Filtert die Ausgabe nach einer Liste von Protokollquellen (z.B. daemon).
-l, --level list Filter die Ausgabe nach einer Liste von Prioritätsstufen (z.B. err, warn).
-k, --kernel Zeigt nur Kernel-Nachrichten an.
-u, --userspace Zeigt nur Benutzernachrichten an.
-w, --follow Wartet auf neue Nachrichten und zeigt sie an.
-W, --follow-new Wartet und zeigt nur neue Nachrichten an.
-x, --decode Dekodiert Facility- und Prioritätsnummern in menschenlesbare Präfixe.
-H, --human Aktiviert menschenlesbare Ausgabe.
-J, --json Verwenden JSON als Ausgabeformat.
-L, --color[=when] Färbt die Ausgabe. Kann auto, never oder always sein.
--noescape Deaktiviert die Sicherung von nicht druckbaren Zeichen.
-P, --nopager Leitet die Ausgabe nicht an einen Pager weiter.
-p, --force-prefix Fügt Facility-, Level- oder Zeitstempelinformationen zu jeder Zeile hinzu.
-r, --raw Zeigt den rohen Nachrichtenpuffer an, wobei alle unlesbaren Zeichen noch maskiert werden.
-S, --syslog Erzwingt die Verwendung der syslog(2) Kernel-Schnittstelle zum Lesen von Kernel-Nachrichten.
-F, --file file Liest Syslog-Nachrichten aus der angegebenen Datei (unterstützt das alte Syslog-Format).
--help Zeigt die Hilfe an und beendet das Programm.
-V, --version Zeigt die Versionsinformationen an und beendet das Programm.
Das dmesg ist ein unverzichtbares Werkzeug für Systemadministratoren und Entwickler, um Probleme mit der Hardware und dem Kernel zu diagnostizieren und zu beheben. Es ermöglicht eine tiefe Einsicht in den Zustand des Systems und liefert oft die ersten Hinweise auf Hardware- oder Treiberprobleme.
Verwendung von dmesg
Filtern und Sortieren mit grep
Das dmesg kann in Kombination mit grep verwendet werden, um bestimmte Schlüsselwörter oder Meldungstypen zu suchen.
dmesg | grep -i error[ 10.343435] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[ 20.434523] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200925/psargs-330)
[ 20.434527] ACPI Error: Aborting method \_SB.PCI0.LPCB.EC0._Q66 due to previous error (AE_NOT_FOUND) (20200925/psparse-529)Diese Ausgabe zeigt alle Kernel-Meldungen an, die das Wort „error“ enthalten. Dies ist nützlich, um schnell nach Fehlern zu suchen, die während des Systemstarts oder Betriebs aufgetreten sind.
Anzeigen in Echtzeit
Mit der Option -w (--follow) kann man neue Kernel-Nachrichten in Echtzeit anzeigen lassen, ähnlich wie bei tail -f.
dmesg -w
Dieser Befehl wird weiterhin Kernel-Meldungen anzeigen, wenn sie auftreten, was besonders nützlich ist, wenn man ein Gerät anschließt oder eine Aktion ausführt, die eine Kernel-Meldung erzeugen könnte (z.B. das Laden eines Treibers).
Anzeigen im Klartextformat
Kernel-Meldungen sind standardmäßig im Klartext, aber dmesg bietet die Möglichkeit, Meldungen im traditionellen RFC-3164 Syslog-Format anzuzeigen, das Zeitstempel im Klartext statt Sekunden seit dem Start anzeigt.
dmesg --ctime[Thu Jul 8 14:23:42 2021] Initializing cgroup subsys cpuset
[Thu Jul 8 14:23:42 2021] Initializing cgroup subsys cpu
[Thu Jul 8 14:23:42 2021] Initializing cgroup subsys cpuacct
...Dies kann das Lesen und Interpretieren der Kernel-Meldungen erleichtern, insbesondere wenn man herausfinden möchte, wann genau eine bestimmte Meldung aufgetreten ist.
Nachrichten nach Schweregrad filtern
Mit der Option -l (–level) kann man die Kernel-Meldungen nach Schweregrad filtern.
Die möglichen Schweregrade sind:
emerg(emergency)alertcrit(critical)err(error)warn(warning)noticeinfodebug
Um nur Fehlermeldungen und kritische Nachrichten anzuzeigen, kann man den folgenden Befehl verwenden.
dmesg -l err,crit[20.434523] ACPI Error: AE_NOT_FOUND, During name lookup/catalog (20200925/psargs-330)
[20.434527] ACPI Error: Aborting method \_SB.PCI0.LPCB.EC0._Q66 due to previous error (AE_NOT_FOUND) (20200925/psparse-529)