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.