So verwenden Sie den dmesg-Befehl unter Linux

Eine stilisierte Terminal-Eingabeaufforderung auf einem Linux-Laptop.

Fatmawati Achmad Zaenuri/Shutterstock



Die |_+_| -Befehl können Sie in die verborgene Welt der Linux-Startprozesse blicken. Überprüfen und überwachen Sie Hardwaregeräte- und Treibernachrichten aus dem Kernel-eigenen Ringpuffer 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.





Der 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.

Der Startup-Prozesse Nehmen Sie dann den Taktstock und schließen Sie 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 hat ein einfaches Design und eine feste Größe. Wenn es voll ist, überschreiben neuere Nachrichten die ältesten Nachrichten. Konzeptionell kann man es sich vorstellen als Ringpuffer .

Anzeige

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. Nimm |_+_| mit dir.



Der dmesg-Befehl

Die |_+_| Befehl erlaubt dir um die im Ringpuffer gespeicherten Nachrichten zu überprüfen . Standardmäßig müssen Sie |_+_| . verwenden um |_+_| zu verwenden.

dmesg

Alle Meldungen im Ringpuffer werden im Terminalfenster angezeigt.

Das war eine Flut. Was wir natürlich tun müssen ist Rohr es durch |_+_|:

dmesg

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

Sie können die Suchfunktion innerhalb von |_+_| . verwenden um die für Sie interessanten Artikel und Begriffe zu finden und hervorzuheben. Starten Sie die Suchfunktion, indem Sie den Schrägstrich / in |_+_| drücken.

VERBUNDEN: So verwenden Sie den less-Befehl unter Linux

Entfernen der Notwendigkeit von sudo

Wenn Sie vermeiden möchten, |_+_| . verwenden zu müssen Jedes Mal, wenn Sie |_+_| verwenden, können Sie diesen Befehl verwenden. Aber seien Sie sich bewusst: Jeder mit einem Benutzerkonto auf Ihrem Computer kann |_+_| . verwenden ohne |_+_| verwenden zu müssen.

dmesg

Farbausgabe erzwingen

Standardmäßig ist |_+_| wird wahrscheinlich so konfiguriert sein, dass eine farbige Ausgabe erzeugt wird. Wenn nicht, können Sie |_+_| . erkennen um seine Ausgabe mit dem |_+_| . einzufärben (Farbe) Option.

sudo

Um |_+_| . zu erzwingen Um immer eine farbige Anzeige zu verwenden, verwenden Sie diesen Befehl:

dmesg

Menschliche Zeitstempel

Standardmäßig ist |_+_| Verwenden Sie eine Zeitstempelnotation von Sekunden und Nanosekunden seit dem Kernel gestartet. Um dies in einem benutzerfreundlicheren Format darzustellen, verwenden Sie das |_+_| (menschliche) Option.

less

Dies führt dazu, dass zwei Dinge passieren.

  • Die Ausgabe wird automatisch in |_+_| angezeigt.
  • 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 |_+_| (für Menschen lesbare) Option. (Es ist ein wenig verwirrend. |_+_| ist die menschliche Option, |_+_| ist die menschenlesbare Option.)

less

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

Anzeige

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 ruft |_+_| nicht automatisch auf.

Live-Events ansehen

Um Nachrichten beim Eintreffen im Kernel-Ringpuffer anzuzeigen, verwenden Sie |_+_| (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 |_+_| . angezeigt Ausgang. Auch virtuelle Hardware führt dazu, dass neue Nachrichten im Ringpuffer erscheinen. Starten Sie eine virtuelle Maschine, und Sie sehen, wie neue Informationen im Ringpuffer ankommen.

less

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

Ausgabe von sudo dmesg --follow n a terminal window

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

dmesg-Ringpuffernachrichten als Ergebnis des Mountens einer CD-ROM

Um den Echtzeit-Feed zu verlassen, drücken Sie |_+_|.

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 Beispiel.

sudo

Anzeige

Die letzten zehn Nachrichten werden abgerufen und im Terminalfenster aufgelistet.

Nach bestimmten Begriffen suchen

Pipe die Ausgabe von |_+_| bis |_+_| nach bestimmten Zeichenfolgen oder Mustern suchen . Hier verwenden wir die |_+_| (Groß-/Kleinschreibung ignorieren) Option, damit die Groß-/Kleinschreibung von übereinstimmenden Zeichenfolgen ignoriert wird. Unsere Ergebnisse umfassen USB und USB sowie jede andere Kombination aus Klein- und Großbuchstaben.

dmesg

Die hervorgehobenen Suchergebnisse werden in Groß- und Kleinbuchstaben angezeigt.

Wir können die Nachrichten isolieren, die Verweise auf die erste enthalten SCSI Festplatte auf dem System |_+_|. (Eigentlich wird |_+_| heutzutage auch für die erste SATA-Festplatte , und für USB-Laufwerke.)

dmesg

Alle Nachrichten, die |_+_| . erwähnen werden abgerufen und im Terminalfenster aufgelistet.

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

sudo

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:

    emer: 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.
Anzeige

Wir können |_+_| . machen Extrahieren Sie Nachrichten, die einem bestimmten Level entsprechen, indem Sie |_+_| . verwenden (level) und übergeben den Namen des Levels als Befehlszeilenparameter. Verwenden Sie diesen Befehl, um nur Nachrichten auf Informationsebene anzuzeigen:

dmesg

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:

dmesg

Die Ausgabe von |_+_| ist eine Mischung aus Nachrichten jeder Log-Ebene:

Die Anlagenkategorien

Die |_+_| Nachrichten werden in Kategorien gruppiert, die als Einrichtungen bezeichnet werden. Die Liste der Einrichtungen lautet:

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

Wir können |_+_| . fragen um seine Ausgabe so zu filtern, dass nur Nachrichten in einer bestimmten Einrichtung angezeigt werden. Dazu müssen wir |_+_| . verwenden (Einrichtung) Option:

-L

|_+_| listet alle Meldungen zu Daemons im Terminalfenster auf.

Wie bei den Levels können wir |_+_| . fragen um Nachrichten von mehr als einer Einrichtung gleichzeitig aufzulisten:

dmesg

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

Kombination von Einrichtung und Ebene

Die |_+_| (dekodieren) Option macht |_+_| zeigen die Einrichtung und die Ebene als lesbare Präfixe für jede Zeile an.

dmesg

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

Anzeige

Der erste hervorgehobene Abschnitt ist eine Nachricht von der Kernel-Einrichtung mit einer Benachrichtigungsstufe. Der zweite hervorgehobene Abschnitt ist eine Nachricht von der Kernel-Einrichtung mit einer Informationsebene.

Das ist toll, aber warum?

Kurz gesagt, Fehlersuche.

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

  • Verwenden Sie |_+_| um Nachrichten von den höchsten zu überprüfen eben nach unten durch jede niedrigere Ebene und suchen Sie nach Fehlern oder Warnungen, die das Hardwareelement erwähnen oder einen Einfluss auf das Problem haben könnten.
  • Verwenden Sie |_+_| nach einer Erwähnung des entsprechenden suchen Einrichtung um zu sehen, ob sie nützliche Informationen enthalten.
  • Rohr |_+_| bis |_+_| und suche verwandte Zeichenfolgen oder Bezeichner wie Produkthersteller oder Modellnummern.
  • Rohr |_+_| bis |_+_| und suche nach allgemeine Begriffe wie GPU oder Speicher, oder Begriffe wie Fehler, fehlgeschlagen oder nicht möglich.
  • Verwenden Sie die |_+_| Option und ansehen |_+_| Nachrichten in Echtzeit.

Fröhliches Jagen.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · 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
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel