Was ist dmesg?
dmesg ist die Abkürzung für 'display message' oder 'driver message' und gibt die im Ringpuffer des Linux-Kernels gespeicherten Nachrichten aus. Es zeigt chronologisch an, wie Hardware erkannt, Treiber geladen oder Fehler aufgetreten sind, vom Systemstart bis zur Gegenwart.
Kernfunktionen und Verwendungszwecke
dmesg wird verwendet, um Vorgänge auf der untersten Ebene des Systems (dem Kernel) zu diagnostizieren.
- Startmeldungen prüfen: Zeigt alle Kernel-Meldungen an, die beim Systemstart ausgegeben werden.
- Hardware-Diagnose: Überprüft Protokolle, wenn neue Hardware (USB, Festplatte usw.) angeschlossen oder entfernt wird.
- Treiberfehler: Verfolgt Ursachen für Treiberladefehler oder Kernel-Level-Fehler (Kernel Panic).
- Ringpuffer: Die Puffergröße ist festgelegt, alte Protokolle werden durch neue überschrieben.
Wichtige Optionen (Shell)
dmesg wird oft mit anderen Befehlen (grep, less) über eine Pipe (|) verbunden, verfügt aber auch über eigene nützliche Optionen.
1. Ausgabeformat und Zeit
2. Filtern und Echtzeitüberwachung
3. Puffer-/Konsolensteuerung (Vorsicht geboten)
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`dmesg` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele (Shell)
dmesg wird oft zusammen mit grep verwendet, um nur die gewünschten Informationen zu filtern.
Alle Nachrichten anzeigen (Paging)
dmesg | less
Die grundlegendste Verwendung. Bequemes Scrollen mit less.
Neue Nachrichten in Echtzeit prüfen (lesbar)
dmesg -wH
Kombiniert -w (Echtzeit) und -H (lesbare Zeit).
Nur USB-bezogene Nachrichten filtern
dmesg | grep -i usb
Die Option -i von grep ignoriert Groß- und Kleinschreibung.
Nachrichten zu Festplatten (SATA/NVMe) filtern
dmesg | grep -iE 'sd[a-z]|nvme'
Sucht mit grep -E (erweiterter regulärer Ausdruck) nach Protokollen, die 'sd[a-z]' oder 'nvme' enthalten.
Nur Fehler (Error) oder Warnungen (Warn) filtern
dmesg -H -l err,warn
Gibt die Log-Stufe mit der Option -l an.
Nur die letzten 10 Zeilen von Nachrichten anzeigen
dmesg | tail -n 10
Kombiniert mit tail, um die neuesten Nachrichten schnell zu überprüfen.
Mit Facility/Level-Tags anzeigen
dmesg -xT | less
Die Option -x dekodiert Facility/Level zur besseren Verständlichkeit.
Log in Datei speichern
dmesg -T > ~/dmesg-$(date +%F-%H%M).log
Speichert den gesamten dmesg-Output direkt nach dem Booten.
Installation
dmesg ist im util-linux-Paket enthalten und wird standardmäßig mit den meisten Linux-Distributionen geliefert.
Standardmäßig installiert
Eine separate Installation ist nicht erforderlich. Falls es fehlt, installieren Sie das 'util-linux'-Paket Ihrer Distribution.
Tipps & Hinweise
dmesg vs journalctl
- systemd-Umgebung: In modernen systemd-Systemen können Sie mit 'journalctl -k' (Kernel-Logs) oder 'journalctl -b' (Logs dieses Boots) System-Logs über das dmesg-Niveau hinaus integriert anzeigen.
- Zeitformat: Die Zeit im Standard-dmesg-Output ist die [verstrichene Zeit in Sekunden seit dem Booten]. Verwenden Sie die Optionen '-H' oder '-T', um die tatsächliche Zeit anzuzeigen.
- Pufferüberschreibung: Aufgrund der Ringpuffer-Eigenschaft können alte Nachrichten verloren gehen. Wenn Sie frühe Boot-Logs bewahren müssen, überprüfen Sie diese mit 'journalctl -b 0' oder speichern Sie die dmesg-Ausgabe in einer Datei.
- Berechtigungen/Sicherheit: Einige Distributionen beschränken den dmesg-Zugriff für normale Benutzer mit '/proc/sys/kernel/dmesg_restrict=1'. Verwenden Sie in diesem Fall 'sudo dmesg' oder 'sudo journalctl -k'.
- Logs löschen (-c, -C): 'dmesg -c' und '-C' sind nützlich für das Debugging, aber einmal gelöscht, können die Logs nicht wiederhergestellt werden. Seien Sie in Produktionsumgebungen vorsichtig.