


Wissen Sie wirklich, wie man Fehler im Linux-Kernel debuggt? Nach der Lektüre dieses Artikels werden Sie aufgeklärt!
Der Linux-Kernel ist der Kern des Betriebssystems und steuert den Zugriff auf Systemressourcen (wie CPU, E/A-Geräte, physischer Speicher und Dateisysteme). Während des Bootvorgangs und im laufenden Systembetrieb schreibt der Kernel verschiedene Meldungen in den Kernel-Ringpuffer. Diese Meldungen enthalten verschiedene Informationen zum Systembetrieb.
Der Kernel-Ringpuffer ist ein Teil des physischen Speichers, der zum Speichern der Protokollmeldungen des Kernels verwendet wird. Es hat eine feste Größe, was bedeutet, dass ältere Protokolldatensätze überschrieben werden, sobald der Puffer voll ist. Das Befehlszeilendienstprogramm
dmesg wird zum Drucken und Steuern des Kernel-Ringpuffers unter Linux und anderen Unix-ähnlichen Betriebssystemen verwendet. Nützlich zum Überprüfen von Kernel-Boot-Meldungen und zum Debuggen von Hardwareproblemen.
In diesem Tutorial behandeln wir die Grundlagen des Befehls dmesg.
Verwendung des dmesg-Befehls
Die Syntax des dmesg-Befehls lautet wie folgt:
dmesg [OPTIONS] 在不带任何选项的情况下调用时,dmesg将所有消息从内核环形缓冲区写入标准输出:
$ dmesg
Standardmäßig können alle Benutzer den dmesg-Befehl ausführen. Auf einigen Systemen ist der Zugriff auf dmesg jedoch möglicherweise auf Nicht-Root-Benutzer beschränkt. In diesem Fall erhalten Sie beim Aufruf von dmesg eine Fehlermeldung wie diese:
dmesg: Readkernel-Puffer fehlgeschlagen: Vorgang nicht zulässig
Kernel-Parameter kernel.dmesg_restrictGibt an, ob nicht privilegierte Benutzer dmesg verwenden können, um Nachrichten aus dem Kernel-Protokollpuffer anzuzeigen. Um die Beschränkung aufzuheben, setzen Sie sie auf Null:
$ sudo sysctl -w kernel.dmesg_restrict=0< / code><code style="margin: 3px;padding: 3px;font-size: 14px;border-radius: 4px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(155, 110, 35);background-color: rgb(255, 245, 227);">$ sudo sysctl -w kernel.dmesg_restrict=0
通常,输出包含很多信息行,因此只能看到输出的最后一部分。要一次查看一页,请将输出通过管道传送到分页实用程序,例如less或more:
$ dmesg --color=always | less
其中的--color=always参数用于保留彩色输出。
如果要过滤缓冲区消息,可能使用grep。例如,要仅查看与 USB 相关的消息,请键入:
$ dmesg | grep -i usb
$ dmesg | grep -i usb< / Code>🎜<p data-tool="mdnice编辑器" style="margin-bottom: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;line-height: 1.8em;color: rgb(58, 58, 58);">dmesg 从/proc/kmsg虚拟文件中读取内核生成的消息。该文件提供了到内核环形缓冲区的接口,并且只能由一个进程打开。如果系统上正在运行syslog进程,并且你尝试使用cat或less命令读取文件,则命令将挂起。</p><p data-tool="mdnice编辑器" style="margin-bottom: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;line-height: 1.8em;color: rgb(58, 58, 58);">syslog守护程序将内核消息转储到/var/log/dmesg,因此你也可以使用该日志文件:</p><p data-tool="mdnice编辑器" style="margin-bottom: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;line-height: 1.8em;color: rgb(58, 58, 58);"><code style="margin: 3px;padding: 3px;font-size: 14px;border-radius: 4px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(155, 110, 35);background-color: rgb(255, 245, 227);">$ cat /var/log/dmesg
格式化 dmesg 输出。
dmesg命令提供了许多选项,可帮助你格式化和过滤输出。
dmesg中最常用的选项之一是-H(--human),它将输出更容易读的结果。
$ dmesg -H
要打印人类可读的时间戳,请使用-T(--ctime选项):
$ dmesg -T [Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
时间戳格式也可以使用--time-format
$ dmesg --time-format=delta
$ dmesg --time-format=delta
你也可以组合两个或多个选项:
$ dmesg -H -T
要实时观看dmesg命令的输出,请使用-w(--follow)选项:
$ dmesg --follow
$ dmesg -H -T
Um die Ausgabe des dmesg-Befehls anzusehen Echtzeit, bitte verwenden Sie die Option -w (--follow): 🎜🎜$ dmesg --follow Code>🎜 🎜Dmesg-Ausgabe filtern. 🎜🎜Sie können die DMESG-Ausgabe auf bestimmte Einrichtungen und Ebenen beschränken. dmesg unterstützt die folgenden Typen: 🎜? <ul class="list-paddingleft-2" data-tool="mdnice编辑器" style='margin-top: 8px;margin-bottom: 8px;padding-left: 25px;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;'>sys log-intern syslogd-Meldungen <li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section></li>lpr – Zeilendrucker-Subsystem <li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section></li>news – Netzwerknachrichten-Subsystem <li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section></li> -f (--facility<li>) Mit der Option -f (--facility<section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">) können Sie die Ausgabe auf ein bestimmtes Gerät beschränken. Diese Option akzeptiert ein oder mehrere durch Kommas getrennte Funktionen. </section>
</li>
<li>
<section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section> Um beispielsweise nur Kernel- und System-Daemon-Nachrichten anzuzeigen, können Sie Folgendes verwenden: </li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section></li> Jede Protokollnachricht ist mit einer Protokollebene verknüpft, die die Wichtigkeit der Nachricht anzeigt. dmesg unterstützt die folgenden Protokollebenen: <li>
<ul class="list-paddingleft-2" data-tool="mdnice编辑器" style='margin-top: 8px;margin-bottom: 8px;padding-left: 25px;caret-color: rgb(0, 0, 0);color: rgb(0, 0, 0);font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;'>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">emerg – Das System ist nicht verfügbar </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">alert – Es muss sofort gehandelt werden </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">crit – Notfallsituation </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">err – Fehlerzustand </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">warn – Warnzustand. </section></li> <li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">kein Eis - normale, aber wichtige Bedingungen </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">Info - Information </section></li>
<li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">Debug - Debug-Level-Meldung </section></li>
</ul>
<p data-tool="mdnice编辑器" style='margin-bottom: 20px;font-family: Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "PingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 16px;text-align: left;white-space: normal;text-size-adjust: auto;line-height: 1.8em;color: rgb(58, 58, 58);'><code style="margin: 3px;padding: 3px;font-size: 14px;border-radius: 4px; Schriftfamilie: „Operator Mono“, Consolas, Monaco, Menlo, Monospace;Wortumbruch: Break-All;Farbe: RGB(155, 110, 35);Hintergrundfarbe: RGB(255, 245, 227);“ > Mit der Option -l (--level <list>)
können Sie die Ausgabe auf eine definierte Ebene beschränken. Die Option akzeptiert eine oder mehrere durch Kommas getrennte Ebenen. Der folgende Befehl zeigt nur Fehler- und kritische Meldungen an: $ dmesg -l err,crit
清除环形缓冲区
-C(--clear)选项可让您清除环形缓冲区:
$ sudo dmesg -C
$ dmesg -l err,crit
Ringpuffer löschen 🎜🎜-C (--clear) Option ermöglicht das Löschen des Ringpuffers: 🎜🎜 $ sudo dmesg -C
🎜🎜Nur Root oder ein Benutzer mit Sudo-Berechtigungen können den Puffer löschen. 🎜Um den Pufferinhalt vor dem Löschen auszudrucken, verwenden Sie die Option -c (--read-clear):
$ sudo dmesg -c
如果要在清除文件之前将当前dmesg日志保存到文件中,你可以将输出重定向到文件:
$ dmesg > dmesg_messages
Wenn Sie das aktuelle dmesg-Protokoll vor dem Löschen in einer Datei speichern möchten, können Sie die Ausgabe in die Datei umleiten: $ dmesg > dmesg_messages
Fazit
Mit dem Befehl dmesg können Sie den Kernel-Ringpuffer anzeigen und steuern. Dies ist hilfreich bei der Fehlerbehebung bei Kernel- oder Hardwareproblemen.
Das obige ist der detaillierte Inhalt vonWissen Sie wirklich, wie man Fehler im Linux-Kernel debuggt? Nach der Lektüre dieses Artikels werden Sie aufgeklärt!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die wichtigsten Unterschiede zwischen CentOS und Ubuntu sind: Ursprung (CentOS stammt von Red Hat, für Unternehmen; Ubuntu stammt aus Debian, für Einzelpersonen), Packungsmanagement (CentOS verwendet yum, konzentriert sich auf Stabilität; Ubuntu verwendet apt, für hohe Aktualisierungsfrequenz), Support Cycle (Centos) (CENTOS bieten 10 Jahre. Tutorials und Dokumente), Verwendungen (CentOS ist auf Server voreingenommen, Ubuntu ist für Server und Desktops geeignet). Weitere Unterschiede sind die Einfachheit der Installation (CentOS ist dünn)

CentOS wird 2024 geschlossen, da seine stromaufwärts gelegene Verteilung RHEL 8 geschlossen wurde. Diese Abschaltung wirkt sich auf das CentOS 8 -System aus und verhindert, dass es weiterhin Aktualisierungen erhalten. Benutzer sollten eine Migration planen, und empfohlene Optionen umfassen CentOS Stream, Almalinux und Rocky Linux, um das System sicher und stabil zu halten.

CentOS -Installationsschritte: Laden Sie das ISO -Bild herunter und verbrennen Sie bootfähige Medien. Starten und wählen Sie die Installationsquelle; Wählen Sie das Layout der Sprache und Tastatur aus. Konfigurieren Sie das Netzwerk; Partition die Festplatte; Setzen Sie die Systemuhr; Erstellen Sie den Root -Benutzer; Wählen Sie das Softwarepaket aus; Starten Sie die Installation; Starten Sie nach Abschluss der Installation von der Festplatte neu und starten Sie von der Festplatte.

Backup- und Wiederherstellungsrichtlinie von GitLab im Rahmen von CentOS -System Um die Datensicherheit und Wiederherstellung der Daten zu gewährleisten, bietet GitLab on CentOS eine Vielzahl von Sicherungsmethoden. In diesem Artikel werden mehrere gängige Sicherungsmethoden, Konfigurationsparameter und Wiederherstellungsprozesse im Detail eingeführt, um eine vollständige GitLab -Sicherungs- und Wiederherstellungsstrategie aufzubauen. 1. Manuell Backup Verwenden Sie den GitLab-RakegitLab: Backup: Befehl erstellen, um die manuelle Sicherung auszuführen. Dieser Befehl unterstützt wichtige Informationen wie GitLab Repository, Datenbank, Benutzer, Benutzergruppen, Schlüssel und Berechtigungen. Die Standardsicherungsdatei wird im Verzeichnis/var/opt/gitlab/backups gespeichert. Sie können /etc /gitlab ändern

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

Wie benutze ich Docker Desktop? Docker Desktop ist ein Werkzeug zum Ausführen von Docker -Containern auf lokalen Maschinen. Zu den zu verwendenden Schritten gehören: 1.. Docker Desktop installieren; 2. Start Docker Desktop; 3.. Erstellen Sie das Docker -Bild (mit Dockerfile); 4. Build Docker Image (mit Docker Build); 5. Docker -Container ausführen (mit Docker Run).

CentOS -Festplattenhalterung ist in die folgenden Schritte unterteilt: Bestimmen Sie den Namen der Festplattengeräte (/dev/sdx); Erstellen Sie einen Mountspunkt (es wird empfohlen, /mnt /newDisk zu verwenden). Führen Sie den Befehl montage (mont /dev /sdx1 /mnt /newdisk) aus; Bearbeiten Sie die Datei /etc /fstab, um eine permanente Konfiguration des Montings hinzuzufügen. Verwenden Sie den Befehl uMount, um das Gerät zu deinstallieren, um sicherzustellen, dass kein Prozess das Gerät verwendet.

Nachdem CentOS gestoppt wurde, können Benutzer die folgenden Maßnahmen ergreifen, um sich damit zu befassen: Wählen Sie eine kompatible Verteilung aus: wie Almalinux, Rocky Linux und CentOS Stream. Migrieren Sie auf kommerzielle Verteilungen: wie Red Hat Enterprise Linux, Oracle Linux. Upgrade auf CentOS 9 Stream: Rolling Distribution und bietet die neueste Technologie. Wählen Sie andere Linux -Verteilungen aus: wie Ubuntu, Debian. Bewerten Sie andere Optionen wie Container, virtuelle Maschinen oder Cloud -Plattformen.
