dmesg
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)alert
crit
(critical)err
(error)warn
(warning)notice
info
debug
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)