GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So verwenden Sie den dmesg-Linux-Befehl

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 . Interner syslogd 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 .


Ubuntu
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So verwenden Sie den Apt-Get-Befehl unter Linux

  4. So verwenden Sie den sudo-Befehl unter Linux

  5. So verwenden Sie den Hostnamen-Befehl unter Linux

So verwenden Sie den Linux-xargs-Befehl

So verwenden Sie den Linux-te-Befehl

So verwenden Sie den obersten Befehl unter Linux

So verwenden Sie den Linux-Ping-Befehl

So verwenden Sie den Dig-Befehl unter Linux

So verwenden Sie den Linux Top-Befehl