GNU/Linux >> Linux Esercitazione >  >> Linux

Strumenti Linux:diffondere il messaggio con dmesg

Il dmesg command è uno di quegli strumenti di risoluzione dei problemi facilmente dimenticati che dovrebbero rimanere in cima al tuo arsenale di sysadmin. Contiene così tante informazioni sul tuo sistema che dmesg dovrebbe essere il primo posto in cui guardi quando qualcosa va storto. L'output da dmesg è lungo, come puoi vedere di persona se lo digiti al prompt dei comandi perché riporta informazioni da tutti gli aspetti del tuo sistema quando non ci sono messaggi di errore, diversi da quelli che potrebbero apparire all'avvio.

Formalmente, dmesg stampa o controlla il buffer dell'anello del kernel. L'azione predefinita è visualizzare tutti i messaggi da questo buffer.

Per riferimenti e confronti futuri, il momento migliore per guardare dmesg è subito dopo l'avvio. Di solito invio dmesg informazioni in un file di testo utilizzando un comando come il seguente:

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

Questo comando crea un file di testo denominato dmesg.12.11.2019.txt . Tra la data di creazione del file e il prossimo avvio, puoi controllare i nuovi messaggi generati dal kernel.

I possibili messaggi post-avvio includono errori di sistema, errori del dispositivo e informazioni su qualsiasi dispositivo USB che qualcuno potrebbe collegare. Ad esempio, il seguente dmesg informazioni visualizzate dopo l'inserimento di un'unità 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

Per visualizzare un elenco completo dei messaggi relativi all'USB, emetti dmesg comando e grep per 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

Come puoi vedere, ho usato il grep comando con -i opzione quindi ignora maiuscole e minuscole e vedrò tutto ciò che è associato ai dispositivi USB indipendentemente da quello (Usb , usb o usb ). Questa pratica è utile per qualsiasi sottosistema o filtro che desideri utilizzare. Ignora sempre il caso del filtro.

Ad esempio, per vedere tutti i dischi (dispositivi a blocchi) collegati al tuo sistema, usa il comando seguente:

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

I risultati mostrano più di un semplice elenco di dispositivi a blocchi, quindi puoi filtrare ulteriormente i risultati specificando il filesystem, in questo caso 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)

L'uso di -i l'opzione qui è superflua ma la includo sempre nel caso in cui ci siano risultati che non vedrei altrimenti. Uso il tasto freccia su per ripetere il mio ultimo comando (una funzione Bash molto eccellente) e tornare indietro sull'ultima cosa che ho cercato e sostituirla con la mia nuova parola chiave, quindi una volta inserito il comando, non devo più preoccuparmi di nulla tranne quello che sto cercando. Nessun danno viene fatto in entrambi i casi.

Se desideri vedere se il tuo sistema remoto è dotato di un'unità CD/DVD, prova questo comando:

$ 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

Le ultime quattro righe visualizzano informazioni sull'unità CD-ROM. Sebbene l'unità CD-ROM sia virtuale su questo sistema, se l'hardware della macchina virtuale la include, l'unità può caricare file di immagine ISO come se fossero un'immagine di avvio su un supporto fisico.

Il dmesg il comando non è grande e appariscente. Non fa molte cose o ha un lungo elenco di opzioni. Invece, è elegante nella sua semplicità e pratico come la tua tasca protettiva. Piuttosto che come ripensamento, dovresti prendere l'abitudine di eseguire dmesg regolarmente sui vostri sistemi. E, quando qualcosa va storto, eseguilo di nuovo per scoprire cosa sa il kernel sul problema. Potresti risparmiarti un po' di dolore e alcuni passaggi per la risoluzione dei problemi. Potresti anche sembrare un eroe ai tuoi colleghi e al management per aver trovato il problema così rapidamente. Ricorda, il tempo è denaro e stai cercando di risparmiarlo e il giorno.

Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente.


Linux
  1. Pianificazione delle attività con il comando cron di Linux

  2. Analizza il kernel Linux con ftrace

  3. Iniziare con il comando tac di Linux

  4. Iniziare con il comando cat di Linux

  5. Iniziare con PostgreSQL su Linux

Iniziare con GIT su Linux

Impara LVM su Linux con strumenti grafici

Introduzione al sistema operativo Linux

Strumenti Linux:esame dell'hardware nel terminale con dmidecode

Iniziare con Linux Mint? Concentrati su questi tre strumenti

Proteggi Linux con il file Sudoers