Der Befehl dmesg
In diesem Beitrag lernen Sie den Befehl dmesg (display message) kennen, welcher unter UNIX- / Linux-Betriebssystemen eingesetzt wird, um die Meldungen des Kernel-Ringpuffers auszulesen. Angewandt wird er insbesondere zur Fehlersuche im System, wenn etwa neue Hardware nicht korrekt erkannt wurde.
Der Befehl ist Teil des Pakets util-linux und damit in der Regel bereits vorinstalliert.
Allgemeine Syntax
Die allgemeine Syntax des Befehls dmesg lautet:
dmesg [Optionen]
Wird der Befehl ohne Angabe jeglicher Optionen ausgeführt, so gibt er standardmäßig alle Meldungen des Kernel-Ringpuffers ungefiltert aus. Aufgrund der Länge dieser Ausgabe ist es sinnvoll, den Befehl mit anderen Befehlen, wie etwa head, tail oder einem Pager wie more oder less zu kombinieren und die Menge der ausgegebenen Meldungen einzuschränken. Zudem eignet sich der Befehl grep, um die Meldungen nach bestimmten Ausdrücken zu durchsuchen.
Wichtige Optionen
Die wichtigsten Optionen des Befehls werden im Folgenden vorgestellt.
-C - Ringpuffer leeren
Soll der Kernel-Ringpuffer geleert werden, so verwenden Sie dazu die Option -C.
dmesg -C
Beispiel: Option -C
Eingabe:
dmesg -C
Bedeutung:
Nach Ausführung des Befehls ist der Kernel-Ringpuffer leer. Bei direkt erneuter Ausführung von dmesg ohne Optionen werden keine Meldungen ausgegeben.
-c - Ringpuffer nach Auslesen leeren
Ähnlich wie -C leert auch die Option -c den Ringpuffer des Kernels. Zuvor werden jedoch alle Meldungen einmal ausgegeben.
dmesg -c
Beispiel: Option -c
In diesem Beispiel wird die Option -c verwendet, um die Meldungen des Kernel-Ringpuffers auszulesen und letzteren anschließend zu leeren.
Eingabe:
Für dieses Beispiel wurde zusätzlich der Befehl head mit einer Pipe angehängt, um nur die ersten 10 Zeilen der Ausgabe von dmesg anzuzeigen. Die weiteren Beispiele dieses Beitrags verwenden den Befehl auf dieselbe Weise.
dmesg -c | head
Ausgabe:
Der Ausgabe sind nun die ersten 10 Zeilen von dmesg's Ausgabe zu entnehmen. Der Kernel-Ringpuffer ist jetzt zudem leer, sodass bei erneuter Eingabe von dmesg zunächst keine Meldungen ausgegeben werden.
-e - Lokale Zeit und Zeitversatz anzeigen
Wird die Option -e angegeben, so gibt dmesg einmalig die lokale Zeit und anschließend jeweils den Zeitversatz der Meldungen in menschenlesbarem Format aus. Es ist jedoch zu beachten, dass die Zeitstempel ungenau sein könnten, da die für die Protokollierung verwendete Zeit nach SUSPEND- und RESUME-Vorgängen nicht noch einmal abgeglichen wird.
dmesg -e
Beispiel: Option -e
Dieses Beispiel zeigt die Option -e zur Ausgabe der lokalen Zeit sowie des Zeitversatzes.
Eingabe:
dmesg -e | head
Ausgabe:
In der ersten Zeile der Ausgabe von dmesg ist die lokale Zeit in menschenlesbarem Format zu sehen (1). In den darauffolgenden Zeilen wird der Zeitstempel jeweils als Zeitversatz von diesem ersten Eintrag, in Sekunden, angezeigt (2).
-f - Ausgabe auf Leistungen beschränken
Mithilfe der Option -f lässt sich die Ausgabe auf Meldungen einer bestimmten Liste von Leistungen beschränken. So wäre es beispielsweise möglich, durch Angabe von "daemon" ausschließlich Meldungen von Daemons (Systemdiensten) zu erhalten. Mehrere Leistungen werden in der Auflistung durch Kommata "," getrennt.
dmesg -f [Leistungen]
Die unterstützten Leistungen können Sie unter den "Supported log facilities" der Ausgabe des folgenden Befehls nachlesen:
dmesg --help
Beispiel: Option -f
Mit der Option -f wird in diesem Beispiel die Ausgabe auf die Leistungen "daemon" und "kern" (kernel) beschränkt.
Eingabe:
Beide Leistungen werden kommasepariert an die Option übergeben.
dmesg -f daemon,kern | head
Ausgabe:
Der Ausgabe sind nun nur Meldungen, die den angegebenen Leistungen angehören, zu entnehmen.
-H - Menschenlesbare Ausgabe
Aktiviert die menschenlesbare Ausgabe. Implizit erfolgt dabei die Ausgabe der lokalen Zeit und des Zeitversatzes in menschenlesbarem Format, wie bei der Option -e. Zugleich wird ein Pager aktiviert, welcher das Scrollen durch die Meldungen mit den Pfeiltasten ermöglicht.
dmesg -H
-l - Ausgabe auf Ebenen beschränken
Die Ausgabe von dmesg lässt sich mithilfe der Option -l auf Meldungen einer Liste von (Log-)Ebenen beschränken - beispielsweise um nur Fehlermeldungen und Warnungen auszugeben. Ähnlich wie auch bei der Option -f wird die Liste kommagetrennt formatiert.
dmesg -l [Ebenen]
Der Ausgabe des folgenden Befehls sind unter der Zeile "Supported log levels (priorities)" die unterstützten Ebenen zu entnehmen:
dmesg --help
Beispiel: Option -l
Hier wird die Ausgabe mit der Option -l auf die Log-Ebene "err" (error) beschränkt.
Eingabe:
Die gewünschte Ebene "err" wird der Option -l übergeben.
dmesg -l err | head
Ausgabe:
In der Ausgabe befinden sich nun nur 4 Meldungen, die zur Log-Ebene "err" gehören.
-T - Menschenlesbare Zeitstempel
Durch Verwendung der Option -T lassen sich durchgehend menschenlesbare Zeitstempel für alle Meldungen anzeigen. Ähnlich wie auch bei der Option -e ist eine eventuelle Ungenauigkeit der Zeitangaben zu berücksichtigen.
dmesg -T
Beispiel: Option -T
In diesem Beispiel wird die Option -T verwendet, um durchgehend menschenlesbare Zeitstempel mit den Meldungen auszugeben.
Eingabe:
dmesg -T | head
Ausgabe:
In der Ausgabe sind die Zeitstempel nun alle menschenlesbar formatiert. (siehe rote Markierung)
-t - Keine Zeitstempel ausgeben
Die Option -t deaktiviert die Ausgabe von Zeitstempeln des Kernels.
dmesg -t
Beispiel: Option -t
Dieses Beispiel zeigt die Deaktivierung der Zeitstempel mit der Option -t.
Eingabe:
dmesg -t | head
Ausgabe:
Es werden keine Zeitstempel mehr ausgegeben, sondern lediglich noch die Meldungen selbst.
-u - Anwendungsmeldungen ausgeben
Mit der Option -u können Meldungen der Anwendungsschicht ausgegeben werden.
dmesg -u
Beispiel: Option -u
Die Ausgabe von Meldungen aus der Anwendungsschicht mit der Option -u wird in diesem Beispiel gezeigt.
Eingabe:
dmesg -u | head
Ausgabe:
Ausgegeben werden hier nur Meldungen, die zur Anwendungsschicht gehören.
Abonniere JETZT unseren Newsletter!
Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!