So verwenden Sie den dmesg-Befehl unter Linux

Die dmesg -Befehl können Sie in die verborgene Welt der Linux-Startprozesse blicken. Überprüfen und überwachen Sie Hardware-Geräte- und Treibernachrichten aus dem eigenen Ringpuffer des Kernels mit „dem Freund des Fehlersuchers“.

So funktioniert der Ringpuffer von Linux

Bei Linux- und Unix-ähnlichen Computern sind Booten und Starten zwei unterschiedliche Phasen der Abfolge von Ereignissen, die beim Einschalten des Computers stattfinden.

Die Bootprozesse (BIOS oder UEFA, MBR, und RODEN) Führen Sie die Initialisierung des Systems bis zu dem Punkt durch, an dem der Kernel in den Speicher geladen und mit der ursprünglichen Ramdisk verbunden wird (initrd oder initramfs), und System ist gestartet.

Die Startup-Prozesse greifen dann zum Taktstock und schließen die Initialisierung des Betriebssystems ab. In den sehr frühen Stadien der Initialisierung werden Logging-Daemons wie z syslogd oder rsyslogd sind noch nicht in Betrieb. Um zu vermeiden, dass bemerkenswerte Fehlermeldungen und Warnungen aus dieser Phase der Initialisierung verloren gehen, enthält der Kernel a Ringpuffer die es als Nachrichtenspeicher verwendet.

Ein Ringpuffer ist ein für Nachrichten reservierter Speicherplatz. Es ist einfach im Design und von einer festen Größe. Wenn es voll ist, überschreiben neuere Nachrichten die ältesten Nachrichten. Konzeptionell kann man es sich vorstellen als „Ringpuffer.“


Der Kernel-Ringpuffer speichert Informationen wie die Initialisierungsnachrichten von Gerätetreibern, Nachrichten von der Hardware und Nachrichten von Kernelmodulen. Da er diese Startmeldungen auf niedriger Ebene enthält, ist der Ringpuffer ein guter Ort, um eine Untersuchung von Hardwarefehlern oder anderen Startproblemen zu starten.

Aber gehen Sie nicht mit leeren Händen. Nehmen dmesg mit dir.

Der dmesg-Befehl

Die dmesg Befehl erlaubt dir um die im Ringpuffer gespeicherten Nachrichten zu überprüfen. Standardmäßig müssen Sie . verwenden sudo benutzen dmesg.

sudo dmesg

Alle Meldungen im Ringpuffer werden im Terminalfenster angezeigt.

Das war eine Flut. Was wir natürlich tun müssen, ist es durchzuleiten less:

sudo dmesg | less

Jetzt können wir durch die Nachrichten scrollen und nach interessanten Elementen suchen.

Sie können die Suchfunktion innerhalb von . verwenden less um die für Sie interessanten Artikel und Begriffe zu finden und hervorzuheben. Starten Sie die Suchfunktion durch Drücken des Schrägstrichs „/“ in less.

So verwenden Sie den less-Befehl unter Linux

Beseitigung der Notwendigkeit für sudo

Wenn Sie vermeiden möchten, verwenden zu müssen sudo jedes Mal, wenn Sie verwenden dmesg, können Sie diesen Befehl verwenden. Aber seien Sie sich bewusst: Jeder mit einem Benutzerkonto kann Ihren Computer verwenden dmesg ohne zu benutzen sudo.

sudo sysctl -w kernel.dmesg_restrict=0

Farbausgabe erzwingen

Standardmäßig, dmesg wird wahrscheinlich so konfiguriert sein, dass eine farbige Ausgabe erzeugt wird. Wenn nicht, kannst du es sagen dmesg um die Ausgabe mit dem zu kolorieren -L (Farbe) Option.

sudo dmesg -L

Zwingen dmesg Um immer eine farbige Anzeige zu verwenden, verwenden Sie diesen Befehl:

sudo dmesg --color=always

Menschliche Zeitstempel

Standardmäßig, dmesg Verwenden Sie eine Zeitstempelnotation von Sekunden und Nanosekunden seit dem Kernel gestartet. Um dies in einem benutzerfreundlicheren Format zu rendern, verwenden Sie die -H (menschliche) Option.

sudo dmesg -H

Dies führt dazu, dass zwei Dinge passieren.

  • Die Ausgabe wird automatisch angezeigt in less.
  • Die Zeitstempel zeigen einen Zeitstempel mit Datum und Uhrzeit in Minutenauflösung. Die Nachrichten, die in jeder Minute aufgetreten sind, sind mit den Sekunden und Nanosekunden seit Beginn dieser Minute gekennzeichnet.

Von Menschen lesbare Zeitstempel

Wenn Sie keine Nanosekunden-Genauigkeit benötigen, aber Zeitstempel haben möchten, die leichter zu lesen sind als die Standardeinstellungen, verwenden Sie die -T (für Menschen lesbare) Option. (Es ist ein wenig verwirrend. -H ist die „menschliche“ Option, -T ist die Option „für Menschen lesbar“.)

sudo dmesg -T

Die Zeitstempel werden als Standarddaten und -zeiten gerendert, die Auflösung wird jedoch auf eine Minute verringert.


Alles, was innerhalb einer Minute passiert ist, hat denselben Zeitstempel. Wenn Sie sich nur um die Abfolge der Ereignisse kümmern, ist dies gut genug. Beachten Sie auch, dass Sie an der Eingabeaufforderung zurückgeladen werden. Diese Option wird nicht automatisch aufgerufen less.

Live-Events ansehen

Um Nachrichten beim Eintreffen im Kernel-Ringpuffer anzuzeigen, verwenden Sie die --follow (auf Nachrichten warten) Option. Dieser Satz mag ein wenig seltsam erscheinen. Wenn der Ringpuffer verwendet wird, um Meldungen von Ereignissen zu speichern, die während der Startsequenz stattfinden, wie können dann Live-Meldungen im Ringpuffer ankommen, wenn der Computer hochgefahren ist?

Alles, was eine Änderung der an Ihren Computer angeschlossenen Hardware verursacht, führt dazu, dass Nachrichten an den Kernel-Ringpuffer gesendet werden. Aktualisieren oder fügen Sie ein Kernel-Modul hinzu, und Sie sehen Ringpuffer-Meldungen zu diesen Änderungen. Wenn Sie ein USB-Laufwerk anschließen oder ein Bluetooth-Gerät anschließen oder trennen, werden Meldungen im dmesg Ausgang. Auch virtuelle Hardware führt dazu, dass neue Meldungen im Ringpuffer erscheinen. Starten Sie eine virtuelle Maschine, und Sie werden sehen, dass neue Informationen im Ringpuffer ankommen.

sudo dmesg --follow

Beachten Sie, dass Sie nicht zur Eingabeaufforderung zurückkehren. Wenn neue Nachrichten erscheinen, werden sie durch . angezeigt dmesg unten im Terminalfenster.

Ausgabe von sudo dmesg --follow na Terminalfenster

Sogar das Einhängen einer CD-ROM wird als Änderung angesehen, da Sie den Inhalt der CD-ROM in den Verzeichnisbaum gepfropft haben.

dmesg-Ringpuffermeldungen als Ergebnis des Einhängens einer CD-ROM

Um den Echtzeit-Feed zu verlassen, drücken Sie Ctrl+C.

Abrufen der letzten zehn Nachrichten

Verwenden Sie den Schwanzbefehl die letzten zehn abrufen Kernel-Ringpuffernachrichten. Natürlich können Sie beliebig viele Nachrichten abrufen. Zehn ist nur unser example.

sudo dmesg | last -10


Die letzten zehn Nachrichten werden abgerufen und im Terminalfenster aufgelistet.

Nach bestimmten Begriffen suchen

Pipe die Ausgabe von dmesg durch grep um nach bestimmten Zeichenfolgen oder Mustern zu suchen. Hier verwenden wir die -i (Groß-/Kleinschreibung ignorieren) Option, damit die Groß-/Kleinschreibung von übereinstimmenden Zeichenfolgen ignoriert wird. unsere Ergebnisse umfassen „usb“ und „USB“ und jede andere Kombination aus Klein- und Großbuchstaben.

sudo dmesg | grep -i usb

Die hervorgehobenen Suchergebnisse sind in Groß- und Kleinbuchstaben.

Wir können die Nachrichten isolieren, die Verweise auf die erste enthalten SCSI Festplatte auf dem System sda. (Genau genommen, sda wird heute auch verwendet für die erste SATA-Festplatte, und für USB-Laufwerke.)

sudo dmesg | grep -i sda

Alle Nachrichten, die erwähnen sda werden abgerufen und im Terminalfenster aufgelistet.

zu machen grep Suchen Sie nach mehreren Begriffen gleichzeitig, verwenden Sie die -E (regulären Ausdruck erweitern) Option. Sie müssen die Suchbegriffe in einer Zeichenfolge in Anführungszeichen mit Pipe „|“ angeben. Trennzeichen zwischen den Suchbegriffen:

sudo dmesg | grep -E "memory|tty|dma"

Jede Nachricht, die einen der Suchbegriffe erwähnt, wird im Terminalfenster aufgelistet.

Verwenden von Protokollebenen

Jeder Nachricht, die im Kernel-Ringpuffer protokolliert wird, ist eine Ebene angehängt. Die Ebene stellt die Bedeutung der Informationen in der Nachricht dar. Die Level sind:

  • auftauchen: System ist unbrauchbar.
  • Alarm: Es müssen sofort Maßnahmen ergriffen werden.
  • krit: Kritische Bedingungen.
  • irren: Fehlerbedingungen.
  • warnen: Warnbedingungen.
  • Notiz: Normaler, aber signifikanter Zustand.
  • die Info: Information.
  • debuggen: Meldungen auf Debug-Ebene.


Wir können machen dmesg Extrahieren Sie Nachrichten, die einem bestimmten Level entsprechen, indem Sie die -l (level) und übergeben den Namen des Levels als Befehlszeilenparameter. Verwenden Sie diesen Befehl, um nur Meldungen auf „Informationsebene“ anzuzeigen:

sudo dmesg -l info

Alle aufgelisteten Nachrichten sind Informationsnachrichten. Sie enthalten keine Fehler oder Warnungen, sondern nur nützliche Benachrichtigungen.

Kombinieren Sie zwei oder mehr Protokollebenen in einem Befehl, um Nachrichten mehrerer Protokollebenen abzurufen:

sudo dmesg -l debug,notice

Die Ausgabe von dmesg ist eine Mischung aus Nachrichten jeder Log-Ebene:

Die Anlagenkategorien

Die dmesg Nachrichten werden in Kategorien gruppiert, die als „Einrichtungen“ bezeichnet werden. Die Liste der Einrichtungen lautet:

  • kern: Kernel-Nachrichten.
  • Benutzer: Nachrichten auf Benutzerebene.
  • mail: Mail-System.
  • Dämon: System-Daemons.
  • auth: Sicherheits-/Autorisierungsmeldungen.
  • syslog: Interne Syslogd-Meldungen.
  • lpr: Zeilendrucker-Subsystem.
  • Nachrichten: Netzwerknachrichten-Subsystem.


Wir können fragen dmesg um seine Ausgabe so zu filtern, dass nur Nachrichten in einer bestimmten Einrichtung angezeigt werden. Dazu müssen wir die -f (Einrichtung) Option:

sudo dmesg -f daemon

dmesg listet alle Meldungen zu Daemons im Terminalfenster auf.

Wie bei den Levels können wir fragen dmesg um Nachrichten von mehr als einer Einrichtung gleichzeitig aufzulisten:

sudo dmesg -f syslog, daemon

Die Ausgabe ist eine Mischung aus Syslog- und Daemon-Log-Meldungen.

Kombination von Einrichtung und Ebene

Die -x (dekodieren) Option macht dmesg zeigen die Einrichtung und Ebene als lesbare Präfixe für jede Zeile an.

sudo dmesg -x

Die Einrichtung und das Niveau sind am Anfang jeder Zeile zu sehen:


Der erste hervorgehobene Abschnitt ist eine Nachricht von der „Kernel“-Einrichtung mit einer „Benachrichtigungsebene“. Der zweite hervorgehobene Abschnitt ist eine Nachricht von der „Kernel“-Einrichtung mit einer Ebene von „Info“.

Das ist großartig, aber warum?

Kurz gesagt, Fehlersuche.

Wenn Sie Probleme damit haben, dass eine Hardware nicht erkannt wird oder sich nicht richtig verhält, dmesg kann etwas Licht auf das Problem werfen.

  • Verwenden dmesg um Nachrichten von der höchsten Ebene nach unten durch jede niedrigere Ebene zu überprüfen und nach Fehlern oder Warnungen zu suchen, die das Hardwareelement erwähnen oder einen Einfluss auf das Problem haben könnten.
  • Verwenden dmesg nach Erwähnungen der entsprechenden Einrichtung zu suchen, um zu sehen, ob sie nützliche Informationen enthalten.
  • Rohr dmesg durch grep und suchen Sie nach verwandten Zeichenfolgen oder Bezeichnern wie Produkthersteller- oder Modellnummern.
  • Rohr dmesg durch grep und suchen Sie nach allgemeinen Begriffen wie „GPU“ oder „Speicher“ oder Begriffen wie „Ausfall“, „Ausgefallen“ oder „Unfähig“.
  • Verwenden Sie die --follow Option und beobachten dmesg Nachrichten in Echtzeit.

Fröhliches Jagen.

Linux-Befehle
DateienTeer · pv · Katze · tac · chmod · grep · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · journalctl · Schwanz · stat · ls · fstab · Echo · weniger · chgrp · chown · Rev · aussehen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · srm
Prozessealias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · bei · Charge · kostenlos · welcher · dmesg · chfn · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · Jawohl · töten · Schlaf · sudo · es ist · Zeit · groupadd · Benutzermod · Gruppen · lshw · abschalten · neustarten · Halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzungnetstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · curl · wget · Wer · Wer bin ich · w · iptables · ssh-keygen · ufw

Beste Linux-Laptops für Entwickler und Enthusiasten

Related Posts