dmesg El comando se utiliza para mostrar los mensajes relacionados con el kernel en sistemas similares a Unix. dmesg significa "mensaje de pantalla o controlador de pantalla “. El comando dmesg recupera sus datos leyendo el búfer de anillo del kernel. Al solucionar problemas en los sistemas Linux, el comando dmesg se vuelve muy útil, puede ayudarnos a identificar errores y advertencias relacionados con el hardware, además de esto, puede imprimir mensajes relacionados con el demonio en su pantalla.
En este artículo cubriremos 10 consejos útiles sobre el comando dmesg para administradores o geeks de Linux. A continuación se muestra la sintaxis del comando dmesg,
# dmesg {opciones}
Las siguientes son las opciones que se pueden usar en el comando dmesg
Pasemos ahora a la parte de los consejos,
1. Mostrar todos los mensajes del búfer de anillo del kernel
Abra la terminal y escriba el comando 'dmesg' y luego presione enter. En su pantalla obtendrá todos los mensajes del búfer de anillo del kernel.
~]# dmesg
El comando dmesg imprimirá todos los mensajes, pero solo verá el último mensaje que quepa en la pantalla. Si desea analizar todos los registros y mostrarlos como una página, use menos o más comandos,
~]# dmesg | less
La salida del comando dmesg sería algo así como a continuación,
2. Mostrar mensajes relacionados con la memoria RAM, el disco duro, las unidades USB y los puertos serie
En la salida del comando dmesg podemos buscar los mensajes relacionados con la memoria RAM, el disco duro, la unidad USB y los puertos serie.
~]# dmesg | grep -i memory ~]# dmesg | grep -i dma ~]# dmesg | grep -i usb ~]# dmesg | grep -i tty
Estos comandos anteriores se pueden combinar en un solo comando usando la opción grep múltiple (-E), los ejemplos se muestran a continuación,
~]# dmesg | grep -E "memory|dma|usb|tty"
La salida sería algo así como a continuación:
[ 4.100608] usb 4-1: SerialNumber: serial [ 4.102288] [TTM] Zone kernel: Available graphics memory: 49438090 kiB [ 4.102294] [TTM] Zone dma32: Available graphics memory: 2097152 kiB [ 4.102891] input: Logitech USB Keyboard as \ /devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.0/input/input2 [ 4.109905] input: American Megatrends Inc. \ Virtual Keyboard and Mouse as \ /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/input/input3 [ 4.153575] hid-generic 0003:046D:C31C.0001: \ input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Keyboard] \ on usb-0000:00:1d.2-1/input0 [ 4.199642] input: Logitech USB Keyboard as \ /devices/pci0000:00/0000:00:1d.2/usb8/8-1/8-1:1.1/input/input4 [ 4.204832] hid-generic 0003:046B:FF10.0002: \ input,hidraw1: USB HID v1.10 Keyboard [American Megatrends Inc. \ Virtual Keyboard and Mouse] on usb-0000:00:1a.1-1/input0 [ 4.211855] input: American Megatrends Inc. Virtual Keyboard and \ Mouse as /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.1/input/input5 [ 4.239313] ata1: SATA max UDMA/133 cmd 0x8138 ctl 0x814c bmdma 0x8110 irq 19 [ 4.239317] ata2: SATA max UDMA/133 cmd 0x8130 ctl 0x8148 bmdma 0x8118 irq 19 [ 4.255839] hid-generic 0003:046D:C31C.0003: input,hidraw2: \ USB HID v1.10 Device [Logitech USB Keyboard] on usb-0000:00:1d.2-1/input1 [ 4.256191] hid-generic 0003:046B:FF10.0004: input,hidraw3:\ USB HID v1.10 Mouse [American Megatrends Inc. Virtual Keyboard and \ Mouse] on usb-0000:00:1a.1-1/input1 [ 4.392050] ata3: SATA max UDMA/133 cmd 0x8128 ctl 0x8144 bmdma 0x80f0 irq 21 [ 4.392051] ata4: SATA max UDMA/133 cmd 0x8120 ctl 0x8140 bmdma 0x80f8 irq 21 [ 19.125903] ioatdma: Intel(R) QuickData Technology Driver 4.00 [ 19.126493] ioatdma 0000:00:16.0: irq 140 for MSI/MSI-X [ 19.128248] ioatdma 0000:00:16.1: irq 142 for MSI/MSI-X [ 19.129953] ioatdma 0000:00:16.2: irq 144 for MSI/MSI-X [ 19.131926] ioatdma 0000:00:16.3: irq 146 for MSI/MSI-X [ 19.134235] ioatdma 0000:00:16.4: irq 147 for MSI/MSI-X [ 19.135688] ioatdma 0000:00:16.5: irq 148 for MSI/MSI-X [ 19.137522] ioatdma 0000:00:16.6: irq 149 for MSI/MSI-X [ 19.140174] ioatdma 0000:00:16.7: irq 150 for MSI/MSI-X [ 19.141931] ioatdma 0000:80:16.0: irq 152 for MSI/MSI-X [ 19.161974] ioatdma 0000:80:16.1: irq 154 for MSI/MSI-X [ 19.167511] ioatdma 0000:80:16.2: irq 156 for MSI/MSI-X [ 19.169293] ioatdma 0000:80:16.3: irq 158 for MSI/MSI-X [ 19.170821] ioatdma 0000:80:16.4: irq 159 for MSI/MSI-X [ 19.174764] ioatdma 0000:80:16.5: irq 160 for MSI/MSI-X [ 19.176360] ioatdma 0000:80:16.6: irq 161 for MSI/MSI-X [ 19.177984] ioatdma 0000:80:16.7: irq 162 for MSI/MSI-X [ 4519.415988] usb 8-1: USB disconnect, device number 2 ~]#
3. Lea y borre los registros de dmesg usando la opción (-C)
Si desea borrar los registros de dmesg después de leerlos, puede usar la opción -C en el comando dmesg,
~]# dmesg -C
4. Mostrar mensajes de colores (salida del comando dmesg)
Use la opción '-L' en el comando dmesg si desea imprimir los mensajes en color,
~]# dmesg -L
5. Limite la salida de dmesg a una instalación específica como daemon
Si desea limitar la salida de dmesg a una instalación específica como daemon, utilice la opción "–facility=daemon ” en el comando dmesg,
~]# dmesg --facility=daemon
La salida del comando anterior sería algo así como a continuación,
[ 3.680902] systemd[1]: systemd 219 running in system mode. \ \ (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP \ +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 3.682017] systemd[1]: Detected architecture x86-64. [ 3.682022] systemd[1]: Running in initial RAM disk. [ 3.682060] systemd[1]: Set hostname to <controller01.egi.ericsson.com>. [ 3.734025] systemd[1]: Reached target Timers. [ 3.734041] systemd[1]: Starting Timers. [ 3.734219] systemd[1]: Created slice -.slice. [ 3.734231] systemd[1]: Starting -.slice. [ 3.736741] systemd[1]: Starting Apply Kernel Variables... [ 3.736792] systemd[1]: Listening on udev Kernel Socket. [ 3.736807] systemd[1]: Starting udev Kernel Socket. [ 3.736823] systemd[1]: Reached target Sockets. [ 3.736832] systemd[1]: Starting Sockets. [ 3.737418] systemd[1]: Starting Setup Virtual Console... [ 3.737488] systemd[1]: Started dracut ask for additional cmdline parameters. [ 3.738211] systemd[1]: Starting dracut cmdline hook... [ 3.738736] systemd[1]: Started Create list of required static \ device nodes for the current kernel. [ 3.740196] systemd[1]: Started Apply Kernel Variables. [ 3.743253] systemd[1]: Starting Create Static Device Nodes in /dev... [ 3.746693] systemd[1]: Started Create Static Device Nodes in /dev. [ 3.814248] systemd[1]: Started Setup Virtual Console. [ 3.822146] systemd[1]: Started Journal Service. [ 16.072365] systemd[1]: Inserted module 'ip_tables' [[email protected] ~]#
Las siguientes son las funciones de registro admitidas en el comando dmesg,
- kern
- usuario
- correo
- demonio
- autor
- Registro del sistema
- lpr
- noticias
6. Restrinja la salida del comando dmesg a una lista específica de niveles
Los siguientes son niveles de registro específicos admitidos por el comando dmesg,
- emerger
- alerta
- critico
- err
- advertir
- aviso
- información
- depurar
Supongamos que queremos mostrar registros relacionados con errores y advertencias, luego use la opción "–level" seguida de niveles como err &warn, el ejemplo se muestra a continuación
~]# dmesg --level=err,warn ---------------------------------- [1341929.334323] iSCSI Login negotiation failed. [1491798.215987] rx_data returned 0, expecting 48. [1491798.217027] iSCSI Login negotiation failed. [1494278.360062] rx_data returned 0, expecting 48. [1494278.361265] iSCSI Login negotiation failed. [1557620.564093] blk_update_request: critical target error, dev dm-6, \ sector 2153 [1557620.565432] dm-23: WRITE SAME failed. Manually zeroing. [1558518.963985] Unable to load target_core_user [1559841.691841] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12 [1559841.691953] scsi 10:0:0:0: alua: not attached [1559860.013693] kvm [72955]: vcpu0 unhandled rdmsr: 0x1ad [1560386.614083] TARGET_CORE[iSCSI]: Expected Transfer Length: \ 264 does not match SCSI CDB Length: 8 for SAM Opcode: 0x12 [1560386.614172] scsi 11:0:0:0: alua: not attached [1608828.924794] rx_data returned 0, expecting 48. [1608828.925904] iSCSI Login negotiation failed. [1787664.206542] rx_data returned 0, expecting 48. [1787664.207809] iSCSI Login negotiation failed. [1800235.169914] rx_data returned 0, expecting 48. [1800235.171012] iSCSI Login negotiation failed. [2051176.431584] ata1.01: failed to resume link (SControl 0) [2051858.493155] ata1.01: failed to resume link (SControl 0) ……………………………………………………………………………… #
7. Habilitar marcas de tiempo en los registros de dmesg
Puede haber algunos escenarios en los que queramos habilitar las marcas de tiempo en dmesg, esto se puede lograr fácilmente usando la opción '-T' en el comando dmesg.
~]# dmesg -T …………………………………………… Wed May 9 12:20:36 2018] rx_data returned 0, expecting 48. [Wed May 9 12:20:36 2018] iSCSI Login negotiation failed. [Thu May 10 03:31:36 2018] httpd[63827]: segfault at 8 ip \ 00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ libpython2.7.so.1.0[7f1ef706c000+178000] [Thu May 10 03:31:37 2018] httpd[57146]: segfault at 8 ip \ 00007f1ef7166c50 sp 00007f1eee417db0 error 4 in \ libpython2.7.so.1.0[7f1ef706c000+178000] [Sat May 12 10:02:56 2018] ata1.00: hard resetting link [Sat May 12 10:02:56 2018] ata1.01: hard resetting link [Sat May 12 10:02:57 2018] ata1.01: failed to resume link (SControl 0) [Sat May 12 10:02:57 2018] ata1.00: SATA link up 1.5 Gbps \ (SStatus 113 SControl 300) [Sat May 12 10:02:57 2018] ata1.01: SATA link down (SStatus 0 SControl 0) [Sat May 12 10:02:57 2018] ata1.01: link offline, clearing class 3 to NONE [Sat May 12 10:02:57 2018] ata1.00: configured for UDMA/100 [Sat May 12 10:02:57 2018] ata1: EH complete [Sat May 12 10:14:18 2018] ata1.00: hard resetting link [Sat May 12 10:14:18 2018] ata1.01: hard resetting link [Sat May 12 10:14:19 2018] ata1.01: failed to resume link (SControl 0) [Sat May 12 10:14:19 2018] ata1.00: SATA link up 1.5 Gbps \ (SStatus 113 SControl 300) [Sat May 12 10:14:19 2018] ata1.01: SATA link down (SStatus 0 SControl 0) [Sat May 12 10:14:19 2018] ata1.01: link offline, clearing class 3 to NONE [Sat May 12 10:14:19 2018] ata1.00: configured for UDMA/100 [Sat May 12 10:14:19 2018] ata1: EH complete …………………………………………………
En caso de que desee mapas temporales junto con la función de decodificación y los niveles en la salida del comando dmesg, utilice “-Tx ” opción,
~]# dmesg -Tx
8. Monitoree los registros de dmesg en tiempo real usando la opción '–seguir'
Use la opción '–seguir' en el comando dmesg para ver los registros de dmesg en tiempo real, el ejemplo se muestra a continuación,
~]# dmesg --follow
Si desea habilitar las marcas de tiempo junto con el monitoreo en tiempo real de dmesg, use el siguiente comando,
~]# dmesg -Tx --follow
9. Muestra el búfer de mensajes sin procesar usando la opción '-r'
Use la opción '-r' en el comando dmesg para mostrar el búfer de mensajes sin procesar, el ejemplo se muestra a continuación,
~]# dmesg -r
10. Forzar el comando dmesg para usar syslog
Puede haber algunas situaciones en las que queramos que dmesg obtenga sus datos de syslog en lugar de /dev/kmsg. Esto se puede lograr fácilmente usando la opción “-S “, el ejemplo se muestra a continuación:
~]# dmesg -S
Los registros del comando dmesg se almacenan en el archivo “/var/log/dmesg”
Eso es todo de este tutorial, espero que estos consejos te ayuden a comprender mejor el comando dmesg.
Lea también :20 ejemplos de comandos ps para monitorear procesos de Linux