dmesg Der Befehl wird verwendet, um Kernel-bezogene Meldungen auf Unix-ähnlichen Systemen anzuzeigen. dmesg steht für „Display Message or Display Driver“. “. Der Befehl dmesg ruft seine Daten ab, indem er den Ringpuffer des Kernels liest. Bei der Fehlersuche auf Linux-Systemen ist der Befehl dmesg sehr praktisch, er kann uns helfen, hardwarebezogene Fehler und Warnungen zu identifizieren, außerdem kann er Daemon-bezogene Meldungen auf Ihrem Bildschirm ausgeben.
In diesem Artikel behandeln wir 10 nützliche Tipps zum dmesg-Befehl für Linux-Administratoren oder Geeks. Nachfolgend finden Sie die Syntax des dmesg-Befehls
# dmesg {Optionen}
Im Folgenden sind die Optionen aufgeführt, die im dmesg-Befehl
verwendet werden können
Lassen Sie uns jetzt in den Tipps-Teil springen,
1. Alle Meldungen aus dem Ringpuffer des Kernels anzeigen
Öffnen Sie das Terminal und geben Sie den Befehl „dmesg“ ein und drücken Sie dann die Eingabetaste. Auf Ihrem Bildschirm erhalten Sie alle Meldungen vom Ringpuffer des Kernels.
~]# dmesg
Der Befehl dmesg druckt alle Nachrichten, aber Sie sehen nur die neueste Nachricht, die auf den Bildschirm passt. Wenn Sie alle Protokolle analysieren und seitenweise anzeigen möchten, verwenden Sie weniger oder mehr Befehle,
~]# dmesg | less
Die Ausgabe des dmesg-Befehls würde in etwa so aussehen:
2. Anzeige von Meldungen zu RAM, Festplatte, USB-Laufwerken und seriellen Anschlüssen
In der dmesg-Befehlsausgabe können wir die Meldungen zu RAM, Festplatte, USB-Laufwerk und seriellen Anschlüssen durchsuchen.
~]# dmesg | grep -i memory ~]# dmesg | grep -i dma ~]# dmesg | grep -i usb ~]# dmesg | grep -i tty
Diese obigen Befehle können mit der Option multiple grep (-E) zu einem einzigen Befehl zusammengeführt werden, Beispiele sind unten gezeigt,
~]# dmesg | grep -E "memory|dma|usb|tty"
Die Ausgabe würde in etwa so aussehen:
[ 4.100608] usb 4-1: SerialNumber: serial [ 4.102288] [TTM] Zone kernel: Available graphics memory: 49438090 kiB [ 4.102294] [TTM] Zone dma32: Available graphics memory: 2097152 kiB [ 4.102891] input: Logitech USB Keyboard as \ /devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.0/input/input2 [ 4.109905] input: American Megatrends Inc. \ Virtual Keyboard and Mouse as \ /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/input/input3 [ 4.153575] hid-generic 0003:046D:C31C.0001: \ input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] \ on usb-0000:00:1d.2-1/input0 [ 4.199642] input: Logitech USB Keyboard as \ /devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.1/input/input4 [ 4.204832] hid-generic 0003:046B:FF10.0002: \ input,hidraw1: USB HID v1.10 Keyboard [American Megatrends Inc. \ Virtual Keyboard and Mouse] on usb-0000:00:1a.1-1/input0 [ 4.211855] input: American Megatrends Inc. Virtual Keyboard and \ Mouse as /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.1/input/input5 [ 4.239313] ata1: SATA max UDMA/133 cmd 0x8138 ctl 0x814c bmdma 0x8110 irq 19 [ 4.239317] ata2: SATA max UDMA/133 cmd 0x8130 ctl 0x8148 bmdma 0x8118 irq 19 [ 4.255839] hid-generic 0003:046D:C31C.0003: input,hidraw2: \ USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:00:1d.2-1/input1 [ 4.256191] hid-generic 0003:046B:FF10.0004: input,hidraw3:\ USB HID v1.10 Mouse [American Megatrends Inc. Virtual Keyboard and \ Mouse] on usb-0000:00:1a.1-1/input1 [ 4.392050] ata3: SATA max UDMA/133 cmd 0x8128 ctl 0x8144 bmdma 0x80f0 irq 21 [ 4.392051] ata4: SATA max UDMA/133 cmd 0x8120 ctl 0x8140 bmdma 0x80f8 irq 21 [ 19.125903] ioatdma: Intel(R) QuickData Technology Driver 4.00 [ 19.126493] ioatdma 0000:00:16.0: irq 140 for MSI/MSI-X [ 19.128248] ioatdma 0000:00:16.1: irq 142 for MSI/MSI-X [ 19.129953] ioatdma 0000:00:16.2: irq 144 for MSI/MSI-X [ 19.131926] ioatdma 0000:00:16.3: irq 146 for MSI/MSI-X [ 19.134235] ioatdma 0000:00:16.4: irq 147 for MSI/MSI-X [ 19.135688] ioatdma 0000:00:16.5: irq 148 for MSI/MSI-X [ 19.137522] ioatdma 0000:00:16.6: irq 149 for MSI/MSI-X [ 19.140174] ioatdma 0000:00:16.7: irq 150 for MSI/MSI-X [ 19.141931] ioatdma 0000:80:16.0: irq 152 for MSI/MSI-X [ 19.161974] ioatdma 0000:80:16.1: irq 154 for MSI/MSI-X [ 19.167511] ioatdma 0000:80:16.2: irq 156 for MSI/MSI-X [ 19.169293] ioatdma 0000:80:16.3: irq 158 for MSI/MSI-X [ 19.170821] ioatdma 0000:80:16.4: irq 159 for MSI/MSI-X [ 19.174764] ioatdma 0000:80:16.5: irq 160 for MSI/MSI-X [ 19.176360] ioatdma 0000:80:16.6: irq 161 for MSI/MSI-X [ 19.177984] ioatdma 0000:80:16.7: irq 162 for MSI/MSI-X [ 4519.415988] usb 8-1: USB disconnect, device number 2 ~]#
3. Lesen und löschen Sie dmesg-Protokolle mit der Option (-C)
Wenn Sie dmesg-Protokolle nach dem Lesen löschen möchten, können Sie die Option -C im dmesg-Befehl verwenden,
~]# dmesg -C
4. Farbige Meldungen anzeigen (Ausgabe des dmesg-Befehls)
Verwenden Sie die Option „-L“ im dmesg-Befehl, wenn Sie die farbigen Nachrichten drucken möchten,
~]# dmesg -L
5. Beschränken Sie die dmesg-Ausgabe auf bestimmte Einrichtungen wie Daemon
Wenn Sie die dmesg-Ausgabe auf bestimmte Einrichtungen wie Daemon beschränken möchten, verwenden Sie die Option „–facility=daemon ” im dmesg-Befehl,
~]# dmesg --facility=daemon
Die Ausgabe des obigen Befehls würde in etwa so aussehen:
[ 3.680902] systemd[1]: systemd 219 running in system mode. \ \ (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP \ +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 3.682017] systemd[1]: Detected architecture x86-64. [ 3.682022] systemd[1]: Running in initial RAM disk. [ 3.682060] systemd[1]: Set hostname to <controller01.egi.ericsson.com>. [ 3.734025] systemd[1]: Reached target Timers. [ 3.734041] systemd[1]: Starting Timers. [ 3.734219] systemd[1]: Created slice -.slice. [ 3.734231] systemd[1]: Starting -.slice. [ 3.736741] systemd[1]: Starting Apply Kernel Variables... [ 3.736792] systemd[1]: Listening on udev Kernel Socket. [ 3.736807] systemd[1]: Starting udev Kernel Socket. [ 3.736823] systemd[1]: Reached target Sockets. [ 3.736832] systemd[1]: Starting Sockets. [ 3.737418] systemd[1]: Starting Setup Virtual Console... [ 3.737488] systemd[1]: Started dracut ask for additional cmdline parameters. [ 3.738211] systemd[1]: Starting dracut cmdline hook... [ 3.738736] systemd[1]: Started Create list of required static \ device nodes for the current kernel. [ 3.740196] systemd[1]: Started Apply Kernel Variables. [ 3.743253] systemd[1]: Starting Create Static Device Nodes in /dev... [ 3.746693] systemd[1]: Started Create Static Device Nodes in /dev. [ 3.814248] systemd[1]: Started Setup Virtual Console. [ 3.822146] systemd[1]: Started Journal Service. [ 16.072365] systemd[1]: Inserted module 'ip_tables' [[email protected] ~]#
Im Folgenden sind die unterstützten Protokollfunktionen im Befehl dmesg aufgeführt,
- Kern
- Benutzer
- Dämon
- auth
- syslog
- lpr
- Neuigkeiten
6. Beschränken Sie die Ausgabe des dmesg-Befehls auf eine bestimmte Liste von Ebenen
Im Folgenden sind bestimmte Protokollebenen aufgeführt, die vom Befehl dmesg unterstützt werden,
- auftauchen
- Warnung
- kritisch
- irr
- warnen
- Hinweis
- Informationen
- debuggen
Nehmen wir an, wir möchten Protokolle zu Fehlern und Warnungen anzeigen und verwenden dann die Option „–level“, gefolgt von Ebenen wie „err“ und „warn“, wie unten gezeigt.
~]# dmesg --level=err,warn ---------------------------------- [1341929.334323] iSCSI Login negotiation failed. [1491798.215987] rx_data returned 0, expecting 48. [1491798.217027] iSCSI Login negotiation failed. [1494278.360062] rx_data returned 0, expecting 48. [1494278.361265] iSCSI Login negotiation failed. [1557620.564093] blk_update_request: critical target error, dev dm-6, \ sector 2153 [1557620.565432] dm-23: WRITE SAME failed. Manually zeroing. [1558518.963985] Unable to load target_core_user [1559841.691841] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12 [1559841.691953] scsi 10:0:0:0: alua: not attached [1559860.013693] kvm [72955]: vcpu0 unhandled rdmsr: 0x1ad [1560386.614083] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12 [1560386.614172] scsi 11:0:0:0: alua: not attached [1608828.924794] rx_data returned 0, expecting 48. [1608828.925904] iSCSI Login negotiation failed. [1787664.206542] rx_data returned 0, expecting 48. [1787664.207809] iSCSI Login negotiation failed. [1800235.169914] rx_data returned 0, expecting 48. [1800235.171012] iSCSI Login negotiation failed. [2051176.431584] ata1.01: failed to resume link (SControl 0) [2051858.493155] ata1.01: failed to resume link (SControl 0) ……………………………………………………………………………… #
7. Zeitstempel in dmesg-Protokollen aktivieren
Es kann einige Szenarien geben, in denen wir Zeitstempel in dmesg aktivieren möchten, dies kann leicht erreicht werden, indem die Option „-T“ im dmesg-Befehl verwendet wird.
~]# dmesg -T …………………………………………… Wed May 9 12:20:36 2018] rx_data returned 0, expecting 48. [Wed May 9 12:20:36 2018] iSCSI Login negotiation failed. [Thu May 10 03:31:36 2018] httpd[63827]: segfault at 8 ip \ 00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ libpython2.7.so.1.0[7f1ef706c000+178000] [Thu May 10 03:31:37 2018] httpd[57146]: segfault at 8 ip \ 00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ libpython2.7.so.1.0[7f1ef706c000+178000] [Sat May 12 10:02:56 2018] ata1.00: hard resetting link [Sat May 12 10:02:56 2018] ata1.01: hard resetting link [Sat May 12 10:02:57 2018] ata1.01: failed to resume link (SControl 0) [Sat May 12 10:02:57 2018] ata1.00: SATA link up 1.5 Gbps \ (SStatus 113 SControl 300) [Sat May 12 10:02:57 2018] ata1.01: SATA link down (SStatus 0 SControl 0) [Sat May 12 10:02:57 2018] ata1.01: link offline, clearing class 3 to NONE [Sat May 12 10:02:57 2018] ata1.00: configured for UDMA/100 [Sat May 12 10:02:57 2018] ata1: EH complete [Sat May 12 10:14:18 2018] ata1.00: hard resetting link [Sat May 12 10:14:18 2018] ata1.01: hard resetting link [Sat May 12 10:14:19 2018] ata1.01: failed to resume link (SControl 0) [Sat May 12 10:14:19 2018] ata1.00: SATA link up 1.5 Gbps \ (SStatus 113 SControl 300) [Sat May 12 10:14:19 2018] ata1.01: SATA link down (SStatus 0 SControl 0) [Sat May 12 10:14:19 2018] ata1.01: link offline, clearing class 3 to NONE [Sat May 12 10:14:19 2018] ata1.00: configured for UDMA/100 [Sat May 12 10:14:19 2018] ata1: EH complete …………………………………………………
Falls Sie Timestmaps zusammen mit der Decodierungsfunktion und Ebenen in der Ausgabe des dmesg-Befehls wünschen, verwenden Sie „-Tx ”-Option,
~]# dmesg -Tx
8. Überwachen Sie dmesg-Protokolle in Echtzeit mit der Option „–follow“
Verwenden Sie die Option „–follow“ im dmesg-Befehl, um dmesg-Protokolle in Echtzeit anzuzeigen, das Beispiel ist unten gezeigt,
~]# dmesg --follow
Wenn Sie Zeitstempel zusammen mit der Echtzeitüberwachung von dmesg aktivieren möchten, verwenden Sie den folgenden Befehl,
~]# dmesg -Tx --follow
9. Zeigen Sie den Rohnachrichtenpuffer mit der Option „-r“ an
Verwenden Sie die Option '-r' im dmesg-Befehl, um den Rohnachrichtenpuffer anzuzeigen, das Beispiel ist unten gezeigt,
~]# dmesg -r
10.Zwingen Sie den dmesg-Befehl, Syslog zu verwenden
Es kann Situationen geben, in denen wir möchten, dass dmesg seine Daten aus syslog und nicht aus /dev/kmsg bezieht. Dies kann einfach mit der Option „-S erreicht werden “, Beispiel ist unten gezeigt:
~]# dmesg -S
dmesg-Befehlsprotokolle werden in der Datei „/var/log/dmesg“
gespeichertDas war alles aus diesem Tutorial, ich hoffe, diese Tipps helfen Ihnen, den Befehl dmesg besser zu verstehen.
Lesen Sie auch :20 ps-Befehlsbeispiele zur Überwachung von Linux-Prozessen