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

Dmesg-Befehl unter Linux

Der Linux-Kernel ist der Kern des Betriebssystems, der den Zugriff auf Systemressourcen wie CPU, E/A-Geräte, physischen Speicher und Dateisysteme steuert. Während des Bootvorgangs und wenn das System läuft, schreibt der Kernel verschiedene Meldungen in den Ringpuffer des Kernels. Diese Nachrichten enthalten verschiedene Informationen über den Betrieb des Systems.

Der Kernel-Ringpuffer ist ein Teil des physischen Speichers, der die Protokollmeldungen des Kernels enthält. Es hat eine feste Größe, was bedeutet, dass die älteren Protokolleinträge überschrieben werden, sobald der Puffer voll ist.

Die dmesg Das Befehlszeilendienstprogramm wird zum Drucken und Steuern des Kernel-Ringpuffers in Linux und anderen Unix-ähnlichen Betriebssystemen verwendet. Es ist nützlich, um Kernel-Boot-Meldungen zu untersuchen und Hardware-bezogene Probleme zu debuggen.

In diesem Tutorial behandeln wir die Grundlagen von dmesg Befehl.

Verwendung von dmesg Befehl #

Die Syntax für dmesg Befehl lautet wie folgt:

dmesg [OPTIONS]

Beim Aufruf ohne Optionen dmesg schreibt alle Meldungen aus dem Ringpuffer des Kernels auf die Standardausgabe:

dmesg

Standardmäßig können alle Benutzer dmesg ausführen Befehl. Allerdings ist auf manchen Systemen der Zugriff auf dmesg kann für Nicht-Root-Benutzer eingeschränkt sein. In dieser Situation beim Aufruf von dmesg Sie erhalten eine Fehlermeldung wie unten:

dmesg: read kernel buffer failed: Operation not permitted

Der Kernel-Parameter kernel.dmesg_restrict gibt an, ob nicht privilegierte Benutzer dmesg verwenden können um Meldungen aus dem Protokollpuffer des Kernels anzuzeigen. Um die Beschränkungen aufzuheben, setzen Sie es auf Null:

sudo sysctl -w kernel.dmesg_restrict=0

Normalerweise enthält die Ausgabe viele Informationszeilen, sodass nur der letzte Teil der Ausgabe sichtbar ist. Um jeweils nur eine Seite anzuzeigen, leiten Sie die Ausgabe an ein Pager-Dienstprogramm wie less weiter oder more :

dmesg --color=always | less

Der --color=always wird verwendet, um die farbige Ausgabe beizubehalten.

Wenn Sie die Puffernachrichten filtern möchten, verwenden Sie grep . Um beispielsweise nur die USB-bezogenen Meldungen anzuzeigen, würden Sie Folgendes eingeben:

dmesg | grep -i usb

dmesg liest die vom Kernel generierten Nachrichten aus /proc/kmsg virtuelle Datei. Diese Datei stellt eine Schnittstelle zum Ringpuffer des Kernels bereit und kann nur von einem Prozess geöffnet werden. Wenn syslog auf Ihrem System läuft und Sie versuchen, die Datei mit cat zu lesen , oder less , wird der Befehl hängen bleiben.

Das syslog Daemon gibt Kernel-Meldungen nach /var/log/dmesg aus , sodass Sie auch diese Protokolldatei verwenden können:

cat /var/log/dmesg

Formatieren von dmesg Ausgabe #

Die dmesg Der Befehl bietet eine Reihe von Optionen, mit denen Sie die Ausgabe formatieren und filtern können.

Eine der am häufigsten verwendeten Optionen von dmesg ist -H (--human ), wodurch die menschenlesbare Ausgabe aktiviert wird. Diese Option leitet die Befehlsausgabe in einen Pager:

dmesg -H

Um menschenlesbare Zeitstempel zu drucken, verwenden Sie das -T (--ctime ) Option:

dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

Das Zeitstempelformat kann auch mit --time-format <format> festgelegt werden Option, die ctime, reltime, delta, notime oder iso sein kann. Um beispielsweise das Delta-Format zu verwenden, würden Sie Folgendes eingeben:

dmesg --time-format=delta

Sie können auch zwei oder mehr Optionen kombinieren:

dmesg -H -T

Um die Ausgabe von dmesg anzusehen Befehl in Echtzeit verwenden Sie das -w (--follow ) Option:

dmesg --follow

Filterung von dmesg Ausgabe #

Sie können dmesg einschränken Ausgabe an bestimmte Einrichtungen und Ebenen.

Die Einrichtung stellt den Prozess dar, der die Nachricht erstellt hat. dmesg unterstützt die folgenden Protokollfunktionen:

  • kern - Kernel-Meldungen
  • user - Nachrichten auf Benutzerebene
  • mail - Mailsystem
  • daemon - System-Daemons
  • auth - Sicherheits-/Autorisierungsmeldungen
  • syslog - interne syslogd-Meldungen
  • lpr - Zeilendrucker-Subsystem
  • news - Netzwerknachrichten-Subsystem

Das -f (--facility <list> )-Option können Sie die Ausgabe auf bestimmte Einrichtungen beschränken. Die Option akzeptiert eine oder mehrere durch Kommas getrennte Einrichtungen.

Um beispielsweise nur die Meldungen der Kernel- und System-Daemons anzuzeigen, würden Sie Folgendes verwenden:

dmesg -f kern,daemon

Jede Protokollnachricht ist mit einer Protokollebene verknüpft, die die Wichtigkeit der Nachricht anzeigt. dmesg unterstützt die folgenden Protokollebenen:

  • emerg - System ist unbrauchbar
  • alert - Es muss sofort gehandelt werden
  • crit - kritische Zustände
  • err - Fehlerbedingungen
  • warn - Warnbedingungen
  • notice - normaler, aber signifikanter Zustand
  • info - informativ
  • debug - Meldungen auf Debug-Ebene

Das -l (--level <list> ) schränkt die Ausgabe auf definierte Ebenen ein. Die Option akzeptiert eine oder mehrere durch Kommas getrennte Ebenen.

Der folgende Befehl zeigt nur die Fehler- und kritischen Meldungen an:

dmesg -l err,crit

Löschen des Ringpuffers #

Das -C (--clear )-Option können Sie den Ringpuffer löschen:

sudo dmesg -C

Nur root oder Benutzer mit sudo-Berechtigungen können den Puffer löschen.

Um den Inhalt des Puffers vor dem Löschen auszudrucken, verwenden Sie -c (--read-clear ) Option:

sudo dmesg -c

Wenn Sie die aktuelle dmesg speichern möchten sich in einer Datei anmeldet, bevor sie gelöscht wird, leiten Sie die Ausgabe in eine Datei um:

dmesg > dmesg_messages

Schlussfolgerung #

Die dmesg Mit dem Befehl können Sie den Ringpuffer des Kernels anzeigen und steuern. Es kann sehr nützlich sein, wenn Kernel- oder Hardwareprobleme behoben werden.

Geben Sie man dmesg ein in Ihrem Terminal für Informationen über alle verfügbaren dmesg Optionen.

Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.


Linux
  1. Linux-dmesg-Befehl - Kernel-Ringpuffer drucken

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

W-Befehl unter Linux

Bei Befehl unter Linux

Modprobe-Befehl unter Linux

Sysctl-Befehl unter Linux

Df-Befehl unter Linux

sysctl-Befehl unter Linux