GNU/Linux >> Znalost Linux >  >> Linux

Linuxové nástroje:Získání zprávy pomocí dmesg

Soubor dmesg command je jedním z těch snadno zapomenutých nástrojů pro odstraňování problémů, které by měly zůstat na vrcholu vašeho arzenálu systémového administrátora. Obsahuje tolik informací o vašem systému, že dmesg by mělo být první místo, kam se podíváte, když se něco pokazí. Výstup z dmesg je dlouhý, jak sami uvidíte, když jej zadáte do příkazového řádku, protože hlásí informace ze všech aspektů vašeho systému, když nejsou žádné chybové zprávy – kromě těch, které se mohou objevit při spouštění.

Formálně dmesg vytiskne nebo řídí vyrovnávací paměť jádra. Výchozí akcí je zobrazení všech zpráv z této vyrovnávací paměti.

Pro budoucí reference a srovnání je nejlepší čas podívat se na dmesg je těsně po startu. Obvykle posílám dmesg informace do textového souboru pomocí příkazu, jako je tento:

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

Tento příkaz vytvoří textový soubor s názvem dmesg.12.11.2019.txt . Mezi datem vytvoření souboru a příštím spuštěním můžete zkontrolovat nové zprávy generované jádrem.

Mezi možné zprávy po spuštění patří systémové chyby, chyby zařízení a informace o jakémkoli zařízení USB, které by někdo mohl připojit. Například následující dmesg informace se objevily po vložení jednotky USB:

[ 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

Chcete-li zobrazit úplný seznam zpráv souvisejících s USB, zadejte dmesg příkaz a grep pro 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

Jak vidíte, použil jsem grep pomocí -i možnost, takže bude ignorovat malá a velká písmena a já uvidím vše spojené se zařízeními USB bez ohledu na to (Usb , usb nebo USB ). Tento postup je vhodný pro jakýkoli podsystém nebo filtr, který chcete použít. Vždy ignorujte velikost vašeho filtru.

Chcete-li například zobrazit všechny disky (bloková zařízení) připojené k vašemu systému, použijte následující příkaz:

$ 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)

Výsledky ukazují více než jen seznam blokovaných zařízení, takže můžete výsledky dále filtrovat zadáním souborového systému, v tomto případě XFS:

$ 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)

Použití -i možnost zde je nadbytečná, ale vždy ji zahrnu pro případ, že by se objevily nějaké výsledky, které bych jinak neviděl. K přehrání posledního příkazu (nejlepší funkce Bash) používám šipku nahoru a poslední věc, kterou jsem hledal, stačí vrátit zpět a nahradit ji mým novým klíčovým slovem, takže jakmile příkaz zadám, už se nemusím s ničím obtěžovat kromě toho, co hledám. Žádná škoda není způsobena ani tak.

Pokud chcete zjistit, zda je váš vzdálený systém vybaven jednotkou CD/DVD, zkuste tento příkaz:

$ 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

Poslední čtyři řádky zobrazují informace o jednotce CD-ROM. Ačkoli je jednotka CD-ROM v tomto systému virtuální, pokud ji hardware virtuálního počítače zahrnuje, může jednotka načítat obrazové soubory ISO, jako by šlo o zaváděcí obraz na fyzické médium.

Soubor dmesg příkaz není velký a okázalý. Nedělá mnoho věcí ani nemá dlouhý seznam možností. Místo toho je elegantní ve své jednoduchosti a stejně praktický jako váš kapesní chránič. Spíše než jako dodatečný nápad byste si měli zvyknout spouštět dmesg pravidelně na vašich systémech. A když se něco pokazí, spusťte to znovu, abyste zjistili, co jádro o problému ví. Můžete si ušetřit trochu zármutku a několik kroků k odstraňování problémů. Také můžete svým spolupracovníkům a vedení připadat jako hrdina, protože problém najdete tak rychle. Pamatujte, že čas jsou peníze a vy se je snažíte ušetřit a den.

Chcete vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma.


Linux
  1. Plánování úloh pomocí linuxového příkazu cron

  2. Analyzujte linuxové jádro pomocí ftrace

  3. Začínáme s PostgreSQL na Linuxu

  1. Začínáme s příkazem tac systému Linux

  2. Začínáme s linuxovým příkazem cat

  3. Začínáme s SSH v Linuxu

  1. Hrajte na bicí na Linuxu s Hydrogen

  2. Odpočiňte si s prostředím Linux Equinox Desktop Environment

  3. Začínáme s pracovním prostředím GNOME Linux