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

Linux-Tools:Mit dmesg die Nachricht rausholen

Die dmesg command ist eines dieser leicht vergessenen Tools zur Fehlerbehebung, das an der Spitze Ihres Sysadmin-Arsenals bleiben sollte. Es enthält so viele Informationen über Ihr System, dass dmesg sollte der erste Ort sein, an dem Sie nachsehen, wenn etwas schief geht. Die Ausgabe von dmesg ist lang, wie Sie selbst sehen können, wenn Sie es an einer Eingabeaufforderung eingeben, weil es Informationen aus allen Aspekten Ihres Systems meldet, wenn es keine Fehlermeldungen gibt – außer denen, die beim Booten angezeigt werden.

Formal dmesg druckt oder steuert den Ringpuffer des Kernels. Die Standardaktion ist die Anzeige aller Nachrichten aus diesem Puffer.

Für zukünftige Referenzen und Vergleiche sollten Sie sich dmesg am besten ansehen ist kurz nach dem Booten. Normalerweise sende ich dmesg Informationen in eine Textdatei mit einem Befehl wie dem folgenden:

$ dmesg > dmesg.`date +%m.%d.%Y`.txt

Dieser Befehl erstellt eine Textdatei namens dmesg.12.11.2019.txt . Zwischen dem Erstellungsdatum der Datei und dem nächsten Start können Sie neue vom Kernel generierte Nachrichten überprüfen.

Mögliche Post-Boot-Meldungen umfassen Systemfehler, Gerätefehler und Informationen zu USB-Geräten, die möglicherweise von jemandem angeschlossen werden. Zum Beispiel der folgende dmesg Informationen wurden nach dem Einstecken eines USB-Laufwerks angezeigt:

[ 9189.631808] usb 1-1: new full-speed USB device number 2 using ohci-pci
[ 9189.909896] ohci-pci 0000:00:06.0: frame counter not updating; disabled
[ 9189.909958] ohci-pci 0000:00:06.0: HC died; cleaning up
[ 9194.910072] usb usb1-port1: attempt power cycle

Um eine vollständige Liste der USB-bezogenen Meldungen anzuzeigen, geben Sie dmesg ein command und grep für usb :

$ dmesg |grep -i usb
[    0.052580] ACPI: bus type USB registered
[    0.052594] usbcore: registered new interface driver usbfs
[    0.052598] usbcore: registered new interface driver hub
[    0.052605] usbcore: registered new device driver usb
[    0.414901] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.414907] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.415398] ohci-pci 0000:00:06.0: new USB bus registered, assigned bus number 1
[    0.468262] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
[    0.468264] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.468266] usb usb1: Product: OHCI PCI host controller
[    0.468268] usb usb1: Manufacturer: Linux 4.18.0-80.el8.x86_64 ohci_hcd
[    0.468269] usb usb1: SerialNumber: 0000:00:06.0
[    0.468454] hub 1-0:1.0: USB hub found
[    0.468842] uhci_hcd: USB Universal Host Controller Interface driver
[    0.468885] usbcore: registered new interface driver usbserial_generic
[    0.468889] usbserial: USB Serial support registered for generic
[    0.470765] usbcore: registered new interface driver usbhid
[    0.470765] usbhid: USB HID core driver
[ 9189.631808] usb 1-1: new full-speed USB device number 2 using ohci-pci
[ 9194.910072] usb usb1-port1: attempt power cycle

Wie Sie sehen können, habe ich den grep verwendet Befehl mit dem -i Option, sodass die Groß-/Kleinschreibung ignoriert wird und ich unabhängig davon alles sehen werde, was mit USB-Geräten verbunden ist (Usb , usb , oder USB ). Diese Vorgehensweise eignet sich für alle Subsysteme oder Filter, die Sie verwenden möchten. Ignorieren Sie immer die Groß-/Kleinschreibung Ihres Filters.

Um beispielsweise alle an Ihr System angeschlossenen Festplatten (Blockgeräte) anzuzeigen, verwenden Sie den folgenden Befehl:

$ dmesg |grep -i sd
[    0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-80.el8.x86_64 root=UUID=f695f641-e489-4674-afd8-8f354533811d ro crashkernel=auto rhgb quiet
[    0.000000] ACPI: RSDP 0x00000000000E0000 000024 (v02 VBOX  )
[    0.000000] ACPI: XSDT 0x000000003FFF0030 00003C (v01 VBOX   VBOXXSDT 00000001 ASL  00000061)
[    0.000000] ACPI: DSDT 0x000000003FFF0470 0022EA (v02 VBOX   VBOXBIOS 00000002 INTL 20100528)
[    0.000000] ACPI: SSDT 0x000000003FFF02A0 0001CC (v01 VBOX   VBOXCPUT 00000002 INTL 20100528)
[    0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-80.el8.x86_64 root=UUID=f695f641-e489-4674-afd8-8f354533811d ro crashkernel=auto rhgb quiet
[    1.545750] sd 2:0:0:0: [sda] 33554432 512-byte logical blocks: (17.2 GB/16.0 GiB)
[    1.545756] sd 2:0:0:0: [sda] Write Protect is off
[    1.545757] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.545764] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    1.546960]  sda: sda1 sda2
[    1.547316] sd 2:0:0:0: [sda] Attached SCSI disk
[    1.975545] XFS (sda2): Mounting V5 Filesystem
[    2.092251] XFS (sda2): Starting recovery (logdev: internal)
[    2.137813] XFS (sda2): Ending recovery (logdev: internal)
[    3.993219] sd 2:0:0:0: Attached scsi generic sg1 type 0
[    5.909006] XFS (sda1): Mounting V5 Filesystem
[    5.959833] XFS (sda1): Starting recovery (logdev: internal)
[    5.962287] XFS (sda1): Ending recovery (logdev: internal)

Die Ergebnisse zeigen mehr als nur eine Liste von Blockgeräten, sodass Sie Ihre Ergebnisse weiter filtern können, indem Sie das Dateisystem, in diesem Fall XFS, angeben:

$ dmesg |grep -i xfs
[    1.965741] SGI XFS with ACLs, security attributes, no debug enabled
[    1.975545] XFS (sda2): Mounting V5 Filesystem
[    2.092251] XFS (sda2): Starting recovery (logdev: internal)
[    2.137813] XFS (sda2): Ending recovery (logdev: internal)
[    5.909006] XFS (sda1): Mounting V5 Filesystem
[    5.959833] XFS (sda1): Starting recovery (logdev: internal)
[    5.962287] XFS (sda1): Ending recovery (logdev: internal)

Die Verwendung des -i Option hier ist überflüssig, aber ich füge sie immer hinzu, nur für den Fall, dass es Ergebnisse gibt, die ich sonst nicht sehen würde. Ich verwende die Aufwärtspfeiltaste, um meinen letzten Befehl (eine hervorragende Bash-Funktion) wiederzugeben, und gehe einfach mit der Rücktaste über das letzte, wonach ich gesucht habe, und ersetze es durch mein neues Schlüsselwort, sodass ich mich nach der Eingabe des Befehls nie mehr um irgendetwas kümmern muss außer was ich suche. So oder so wird kein Schaden angerichtet.

Wenn Sie sehen möchten, ob Ihr entferntes System mit einem CD/DVD-Laufwerk ausgestattet ist, versuchen Sie es mit diesem Befehl:

$ dmesg |grep -i cd
[    0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[    0.414901] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.414907] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.468262] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001, bcdDevice= 4.18
[    0.468268] usb usb1: Manufacturer: Linux 4.18.0-80.el8.x86_64 ohci_hcd
[    0.468842] uhci_hcd: USB Universal Host Controller Interface driver
[    1.328589] ata2.00: ATAPI: VBOX CD-ROM, 1.0, max UDMA/133
[    1.329773] scsi 1:0:0:0: CD-ROM            VBOX     CD-ROM           1.0  PQ: 0 ANSI: 5
[    1.577662] cdrom: Uniform CD-ROM driver Revision: 3.20
[    1.578616] sr 1:0:0:0: Attached scsi CD-ROM sr0

Die letzten vier Zeilen zeigen Informationen über das CD-ROM-Laufwerk an. Obwohl das CD-ROM-Laufwerk auf diesem System virtuell ist, kann das Laufwerk ISO-Image-Dateien laden, als ob sie ein bootfähiges Image auf einem physischen Medium wären, wenn die Hardwareausstattung der virtuellen Maschine es enthält.

Die dmesg Befehl ist nicht groß und auffällig. Es macht nicht viele Dinge oder hat eine lange Liste von Optionen. Stattdessen ist er in seiner Schlichtheit elegant und so praktisch wie Ihr Taschenprotektor. Anstatt nachträglich daran zu denken, sollten Sie sich angewöhnen, dmesg auszuführen regelmäßig auf Ihren Systemen. Und wenn etwas schief geht, führen Sie es erneut aus, um herauszufinden, was der Kernel über das Problem weiß. Sie ersparen sich möglicherweise Ärger und ein paar Schritte zur Fehlerbehebung. Sie könnten auch für Ihre Kollegen und das Management wie ein Held aussehen, weil Sie das Problem so schnell gefunden haben. Denken Sie daran, Zeit ist Geld und Sie versuchen, es und zu sparen Tag.

Möchten Sie Red Hat Enterprise Linux ausprobieren? Jetzt kostenlos herunterladen.


Linux
  1. Planen von Aufgaben mit dem Linux-Cron-Befehl

  2. Analysieren Sie den Linux-Kernel mit ftrace

  3. Erste Schritte mit dem Linux-cat-Befehl

  4. Erste Schritte mit PostgreSQL unter Linux

  5. Erste Schritte mit SSH unter Linux

Erste Schritte mit GIT unter Linux

Lernen Sie LVM unter Linux mit grafischen Tools

Erste Schritte mit dem Linux-Betriebssystem

Linux-Tools:Untersuchen der Hardware im Terminal mit dmidecode

Erste Schritte mit Linux Mint? Konzentrieren Sie sich auf diese drei Werkzeuge

Sichern Sie Linux mit der Sudoers-Datei