El dmesg
command es una de esas herramientas de solución de problemas fácilmente olvidadas que debería permanecer en la parte superior de su arsenal de administradores de sistemas. Contiene tanta información sobre su sistema que dmesg
debería ser el primer lugar donde mirar cuando algo sale mal. La salida de dmesg
es largo, como puede ver por sí mismo si lo escribe en un símbolo del sistema porque informa información de todos los aspectos de su sistema cuando no hay mensajes de error, aparte de los que pueden aparecer en el arranque.
Formalmente, dmesg
imprime o controla el búfer de anillo del kernel. La acción predeterminada es mostrar todos los mensajes de este búfer.
Para futuras referencias y comparaciones, el mejor momento para mirar dmesg
es justo después del arranque. Normalmente envío dmesg
información a un archivo de texto mediante un comando como el siguiente:
$ dmesg > dmesg.`date +%m.%d.%Y`.txt
Este comando crea un archivo de texto llamado dmesg.12.11.2019.txt
. Entre la fecha de creación del archivo y el próximo arranque, puede comprobar los nuevos mensajes generados por el kernel.
Los posibles mensajes posteriores al arranque incluyen errores del sistema, errores del dispositivo e información sobre cualquier dispositivo USB que alguien pueda conectar. Por ejemplo, el siguiente dmesg
apareció información después de insertar una unidad 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
Para ver una lista completa de mensajes relacionados con USB, emita el dmesg
comando y grep para 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
Como puede ver, utilicé el grep
comando con -i
opción por lo que ignora mayúsculas y minúsculas y veré todo lo asociado con dispositivos USB independientemente de eso (Usb
, usb
o USB
). Esta práctica es buena para cualquier subsistema o filtro que desee utilizar. Ignora siempre la carcasa de tu filtro.
Por ejemplo, para ver todos los discos (dispositivos de bloque) conectados a su sistema, use el siguiente comando:
$ 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)
Los resultados muestran más que solo una lista de dispositivos de bloque, por lo que puede filtrar aún más sus resultados especificando el sistema de archivos, XFS en este caso:
$ 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)
El uso de -i
La opción aquí es superflua, pero siempre la incluyo en caso de que haya algún resultado que no vería de otra manera. Utilizo la tecla de flecha hacia arriba para reproducir mi último comando (una excelente característica de Bash) y simplemente retrocedo sobre lo último que busqué y lo reemplazo con mi nueva palabra clave, así que una vez que ingreso el comando, nunca tengo que preocuparme por nada. excepto lo que estoy buscando. No se hace daño de ninguna manera.
Si desea ver si su sistema remoto está equipado con una unidad de CD/DVD, pruebe este 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
Las últimas cuatro líneas muestran información sobre la unidad de CD-ROM. Aunque la unidad de CD-ROM es virtual en este sistema, si el complemento de hardware de la máquina virtual lo incluye, la unidad puede cargar archivos de imagen ISO como si fueran una imagen de arranque en un medio físico.
El dmesg
El comando no es grande y llamativo. No hace muchas cosas ni tiene una larga lista de opciones. En cambio, es elegante en su sencillez y tan práctico como tu protector de bolsillo. En lugar de una ocurrencia tardía, debe adquirir el hábito de ejecutar dmesg
regularmente en sus sistemas. Y, cuando algo sale mal, ejecútelo de nuevo para averiguar qué sabe el kernel sobre el problema. Puede ahorrarse un poco de dolor y algunos pasos para solucionar problemas. También puede parecer un héroe para sus compañeros de trabajo y la gerencia por encontrar el problema tan rápido. Recuerde, el tiempo es dinero y usted está tratando de ahorrarlo y el día.
¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.