Einführung
Die dmesg
command ist ein Linux-Dienstprogramm, das Kernel-bezogene Meldungen anzeigt, die aus dem Kernel-Ringpuffer abgerufen werden. Der Ringpuffer speichert Informationen über Hardware, Gerätetreiberinitialisierung und Meldungen von Kernelmodulen, die während des Systemstarts stattfinden.
Die dmesg
Der Befehl ist von unschätzbarem Wert bei der Fehlerbehebung bei hardwarebezogenen Fehlern, Warnungen und bei der Diagnose von Gerätefehlern.
In diesem Tutorial lernen Sie, wie Sie dmesg
verwenden Befehl unter Linux.
Voraussetzungen
- Ein Computersystem, auf dem Linux ausgeführt wird.
- Ein Benutzerkonto mit Administratorrechten.
Syntax und Optionen
Das grundlegende dmesg
Befehlssyntax ist:
dmesg [options]
Die folgende Tabelle listet die am häufigsten verwendeten dmesg
auf Optionen:
Option | Beschreibung |
---|---|
-C, --clear | Löscht den Ringpuffer. |
-c, --read-clear | Druckt den Inhalt des Ringpuffers und löscht ihn dann. |
-f, --facility [list] | Beschränkt die Ausgabe auf die angegebene kommagetrennte Einrichtung [list] . |
-H, --human | Ermöglicht eine menschenlesbare Ausgabe. |
-L, --color[=auto|never|always] | Fügt der Ausgabe Farbe hinzu. Weglassen des [auto|never|always] arguments standardmäßig auf auto. |
-l, --level [list] | Beschränkt die Ausgabe auf die angegebene kommagetrennte Ebenenliste. |
--noescape | Deaktiviert die Funktion zum automatischen Escapezeichen für nicht druckbare und potenziell unsichere Zeichen. |
-S, --syslog | Instruiert dmesg um die Syslog-Kernel-Schnittstelle zum Lesen von Kernel-Meldungen zu verwenden. Standardmäßig wird /dev/kmsg verwendet statt syslog . |
-s, --buffer-size [size] | Verwendet die angegebene Puffergröße, um den Ringpuffer des Kernels abzufragen. Der Standardwert ist 16392. |
-T, --ctime | Druckt menschenlesbare Zeitstempel. |
-t, --notime | Instruiert dmesg Kernel-Zeitstempel nicht drucken. |
--time-format [format] | Druckt Zeitstempel im angegebenen [format] . Die akzeptierten Formate sind ctime , reltime , delta und iso (eine dmesg Implementierung des ISO-8601-Formats). |
-w, --follow | Behält dmesg läuft und wartet auf neue Nachrichten. Die Funktion ist nur auf Systemen mit lesbarem /dev/kmsg verfügbar Datei. |
-x, --decode | Entschlüsselt die Einrichtungs- und Levelnummern in menschenlesbare Präfixe. |
-h, --help | Zeigt die Hilfedatei mit allen verfügbaren Optionen an. |
Linux-dmesg-Befehlsbeispiele
Die Beispiele sind allgemeine dmesg
Anwendungsfälle für Befehle.
Alle Nachrichten vom Kernel Ring Buffer anzeigen
Aufruf von dmesg
ohne Optionen gibt den gesamten Kernel-Puffer aus, ohne Stopps und ohne Möglichkeit, durch die Ausgabe zu navigieren.
sudo dmesg
Das obige Beispiel ist ein partielles dmesg
Befehlsausgabe. Für eine einfachere Navigation und bessere Lesbarkeit leiten Sie dmesg
weiter Ausgabe in einen Terminal-Pager wie less
, more
, oder verwenden Sie grep .
Zum Beispiel:
sudo dmesg | less
Weiterleiten von dmesg
in less
können Sie die Suchfunktion verwenden, um Elemente zu finden und hervorzuheben. Aktivieren Sie die Suche, indem Sie / drücken . Navigieren Sie mit der Leertaste zum nächsten Bildschirm , oder mit B umkehren Schlüssel. Verlassen Sie die Ausgabe mit Q .
Farbige Nachrichten anzeigen
Standardmäßig dmesg
erzeugt eine farbige Ausgabe. Wenn die Ausgabe nicht farbig ist, verwenden Sie das -L
Option zum Einfärben.
sudo dmesg -L
Um farbige Ausgaben zu deaktivieren, hängen Sie --color=never
an Option zu dmesg
. Führen Sie den folgenden Befehl aus:
sudo dmesg --color=never
Das standardmäßige dmesg
Ausgabe hat jetzt eine einheitliche Farbe.
Nachrichten anzeigen, sobald sie ankommen
Überwachen Sie den Ringpuffer des Kernels in Echtzeit mit --follow
Möglichkeit. Die Option weist den Befehl an, nach dem Systemstart auf neue Meldungen zu Hardware- oder Kernelmodulen zu warten.
Führen Sie das folgende dmesg
aus Befehl zum Aktivieren der Kernel-Ringpufferüberwachung in Echtzeit:
sudo dmesg --follow
Der Befehl zeigt alle neuen Nachrichten unten im Terminalfenster an. Stoppen Sie den Vorgang mit Strg+C .
Nach einem bestimmten Begriff suchen
Wenn Sie nach bestimmten Problemen oder Hardwaremeldungen suchen, leiten Sie dmesg
weiter Ausgabe in grep
um nach einer bestimmten Zeichenfolge oder einem bestimmten Muster zu suchen.
Wenn Sie beispielsweise nach Meldungen zum Arbeitsspeicher suchen, führen Sie den folgenden Befehl aus:
dmesg | grep -i memory
Die Ausgabe zeigt alle Zeilen aus dem Puffer, der den memory
enthält Schnur. Das -i
(Groß-/Kleinschreibung ignorieren) Schalter ignoriert Sorgfaltsempfindlichkeit.
Wenn Sie nach Puffermeldungen über USB, serielle Anschlüsse, Netzwerk oder Festplatten suchen, führen Sie alternativ die folgenden Befehle aus:
USB
dmesg | grep -i usb
Serielle Ports
dmesg | grep -i tty
Netzwerk
dmesg | grep -i eth
Festplatten
sudo dmesg | grep -i sda
Suchen Sie gleichzeitig nach mehreren Begriffen, indem Sie -E
anhängen Option zu grep
und Bereitstellen der Suchbegriffe eingeschlossen in Anführungszeichen, getrennt durch senkrechte Striche. Zum Beispiel:
sudo dmesg | grep -E "memory|tty"
Die Ausgabe gibt alle Nachrichten aus, die einen der Suchbegriffe enthalten.
dmesg-Protokolle lesen und löschen
Das -c
(--read-clear
) Option können Sie die dmesg
löschen Protokoll nach dem Drucken. Das Löschen des Puffers stellt sicher, dass Sie nur gültige Nachrichten vom letzten Neustart erhalten.
Führen Sie den folgenden Befehl aus:
sudo dmesg -c
dmesg
erneut ausführen hat keine Ausgabe, da das Protokoll gelöscht wurde.
Zeitstempel in dmesg-Protokollen aktivieren
Aktivieren Sie Zeitstempel in dmesg
ausgegeben, indem Sie es mit dem -H
anhängen (--human
)-Option, die eine für Menschen lesbare Ausgabe erzeugt und die Ausgabe automatisch an einen Pager weiterleitet (less
).
Führen Sie den folgenden Befehl aus:
sudo dmesg -H
Der Befehl fügt einen Zeitstempel mit dem in Minuten aufgelösten Datum und der Uhrzeit hinzu. Die Ereignisse in derselben Minute sind mit Sekunden und Nanosekunden gekennzeichnet.
Beenden Sie den Pager, indem Sie Q drücken .
Menschlich lesbare Zeitstempel aktivieren
Aktivieren Sie menschenlesbare Zeitstempel mit -T
(--ctime
) Möglichkeit. Die Option entfernt die Nanosekunden-Genauigkeit aus der Ausgabe, aber die Zeitstempel sind leichter zu verfolgen.
sudo dmesg -T
Die Zeitstempel in der Ausgabe sind Standarddaten und -zeiten, und die Auflösung erfolgt in Minuten. Derselbe Zeitstempel wird jeder Aktion vorangestellt, die in derselben Minute stattgefunden hat.
Zeitstempelformat wählen
Verwenden Sie das --time-format [format]
Option zur Auswahl des Zeitstempelformats. Die verfügbaren Formate sind:
ctime
reltime
delta
notime
iso
Zum Beispiel, um iso
zu verwenden formatieren, ausführen:
sudo dmesg --time-format=iso
Das Zeitstempelformat ist jetzt YYYY-MM-DD<T>HH:MM:SS,<microseconds>←+><timezone offset from UTC>
.
Dmesg-Ausgabe auf eine bestimmte Einrichtung beschränken
Filtern Sie dmesg
Ausgabe in eine bestimmte Kategorie mit -f
Möglichkeit. Das System gruppiert Nachrichten im Kernel-Ringpuffer in die folgenden Einrichtungen (Kategorien):
kern
. Kernel-Meldungen.user
. Nachrichten auf Benutzerebene.mail
. Nachrichten des Mailsystems.daemon
. Meldungen über System-Daemons.auth
. Autorisierungsmeldungen.syslog
. Internersyslogd
Nachrichten.lpr
. Meldungen des Zeilendrucker-Subsystems.news
. Nachrichten des Netzwerk-News-Subsystems.
Beispielsweise beschränkt der folgende Befehl die Ausgabe auf Meldungen im Zusammenhang mit syslog
Einrichtung:
sudo dmesg -f syslog
Um Nachrichten von mehr als einer Einrichtung aufzulisten, geben Sie eine durch Kommas getrennte Liste von Einrichtungen an. Zum Beispiel:
sudo dmesg -f syslog,daemon
Protokollebenen filtern
Die dmesg
Der Befehl ordnet jeder Puffernachricht eine Protokollebene zu, die die Wichtigkeit der Nachricht kennzeichnet. Die verfügbaren Ebenen sind:
emerg
. Notfallnachrichten.alert
. Warnungen, die sofortige Maßnahmen erfordern.crit
. Kritische Zustände.err
. Fehlermeldungen.warn
. Warnmeldungen.notice
. Normale, aber signifikante Bedingungen.info
. Informationsmeldungen.debug
. Meldungen auf Debugging-Ebene.
Weisen Sie dmesg
an mit -l
nur die Nachrichten zu drucken, die einem bestimmten Level entsprechen Option, gefolgt vom Ebenennamen. Zum Beispiel:
sudo dmesg -l info
Das obige Beispiel extrahiert nur Informationsmeldungen aus dem Protokoll.
Kombinieren Sie mehrere Ebenen in einer durch Kommas getrennten Liste, um Nachrichten von diesen Ebenen abzurufen. Zum Beispiel:
sudo dmesg -l notice,warn
Die Ausgabe kombiniert Nachrichten aus den angegebenen Protokollebenen.
Facility und Level kombinieren
Zeigen Sie am Anfang jeder Zeile mit -x
explizit die Einrichtung und Protokollebene jeder Puffernachricht an (Decodieren)-Option.
Zum Beispiel:
sudo dmesg -x
Im obigen Beispiel wird jeder Zeile die entsprechende Einrichtung und Protokollebene vorangestellt.
Dmesg-Protokolldatei lesen
Bei jedem Systemstart werden die Meldungen aus dem Ringpuffer des Kernels in /var/log/dmesg gespeichert Datei. Die dmesg
Befehl zeigt den Inhalt der Protokolldatei an. Bei Problemen mit der dmesg
Befehl, öffnen Sie die Protokolldatei in einem Texteditor, um den Inhalt anzuzeigen.
Im folgenden Beispiel verwenden wir den cat-Befehl, um die Protokolldatei anzuzeigen und sie an grep
weiterzuleiten um nach einer bestimmten Zeichenfolge zu suchen, die im Protokoll vorkommt:
cat dmesg | grep amd
Der Befehl gibt alle amd
aus Zeichenfolgeinstanzen in der Protokolldatei.
Nach einem CD-Laufwerk suchen
Überprüfen Sie, ob ein Remote-Computer mit einem CD-Laufwerk ausgestattet ist, indem Sie das Puffermeldungsprotokoll überprüfen. Der folgende Befehl zeigt beispielsweise alle Meldungen über CD-Geräte, die beim Start initialisiert wurden:
sudo dmesg | grep -iE 'cdrom|dvd|cd/rw|cd-rom'
Die Ergebnisse zeigen Informationen zu den verfügbaren CD-ROM-Laufwerken an, einschließlich des virtuellen CD-ROM-Laufwerks auf diesem Computer.
Sudo-Anforderung entfernen
Durch das Entfernen der Anforderung für Superuser-Privilegien kann jeder Benutzer dmesg
ausführen und Kernel-Ringpuffermeldungen anzeigen. Führen Sie den folgenden Befehl aus, um die Sudo-Anforderung zu entfernen:
sudo sysctl -w kernel.dmesg_restrict=0
Nachdem Sie die Einschränkungen auf 0
gesetzt haben , kann jeder Benutzer auf dem System dmesg
ausführen .