Bienvenidos a un nuevo post en ByteMind en el cual les vamos a hablar de un comando muy útil en sistemas basados en Unix o Linux llamado dmesg.
Durante todo el proceso de arranque del sistema, el núcleo se carga en la memoria y controla todo el sistema.
Cuando el sistema se inicia, imprime por pantalla información acerca de los dispositivos de hardware que el núcleo detecta durante el proceso de arranque.
Estos mensajes están disponibles en el búfer del núcleo y cada vez que llega un mensaje nuevo sobreescrive el anterior. Para ver todos estos mensajes después del arranque del sistema se utiliza el comando dmesg.
En el post de hoy vamos a ver una serie de ejemplos con los que poder consultar información útil del sistema, pero antes de nada veamos como es la sintaxis del comando:
1 |
dmesg [options] |
Y como no, la ayuda y el manual del mismo:
1 2 |
dmesg -h man dmesg |
Mostrar los mensajes del arranque
Al ejecutar el comando dmesg, se pueden ver los dispositivos de hardware que han sido detectados durante el arranque y los detalles de configuración de los mismos. Hay muchísima información útil en la salida de este comando y podemos verlo de la siguiente forma:
1 |
dmesg | less |
Mostrar los eventos relacionados con la memoria
También es posible ver la memoria utilizada por el sistema, así como detectar posibles problemas en la misma. Para ello podemos buscar por el tipo de memoria a buscar, ya sea RAM, un disco duro, un dispositivo usb o un puerto serial:
1 2 3 4 5 6 7 8 |
# show ram dmesg | grep -i memory # show hard disk dmesg | grep -i dma # show usb device dmesg | grep -i usb # show serial ports dmesg | grep -i tty |
O también, es posible mezclar todas estas consultas en una:
1 |
dmesg | grep -E "memory|dma|usb|tty" |
Leer y limpiar los logs de dmesg
Podemos utilizar la opción -c con el comando dmesg para hacer una limpieza de su registro a la vez que vemos los logs actuales:
1 |
dmesg -c |
Mostrar colores en los mensajes de log
Otra opción es el uso de -L del comando dmesg para obtener una vista coloreada y que puede hacer más fácil la identificación de ciertos logs:
1 |
dmesg -L |
Limitar la salida a un tipo concreto
Si desea limitar la salida del comando a un tipo en concreto puede utilizar la opción facility especificando el tipo a mostar, por ejemplo:
1 |
dmesg --facility=daemon |
Además de esta podríamos hacer una búsqueda en base a los siguientes servicios:
1 2 3 4 5 6 7 8 |
kern - mensajes del núcleo user - menajes de nivel de usuario aleatorios mail - sistema de correo daemon - demonios del sistema auth - mensajes de seguridad/autorización syslog - mensajes generados internamente por syslogd lpr - subsistema de impresora de líneas news - subsistema de noticias de red |
Restringir la salida a una lista específica de niveles de criticidad
Otra opción es limitar el nivel de log que queremos obtener, por ejemplo, queremos obtener sólo errores obtenidos en el mismo. Para ello usaríamos la opción level de la siguiente forma:
1 |
dmesg --level=err |
En caso de querer varios, se deberían separar cada uno con un caracter “,”:
1 |
dmesg --level=err, warn |
Y tendríamos disponibles los siguientes niveles:
1 2 3 4 5 6 7 8 |
emerg - el sistema se encuentra en un estado inutilizable alert - se debe tomar una acción inmediatamente crit - condiciones críticas err - condiciones de error warn - condiciones de aviso notice - condición normal pero significativa info - informacional debug - mensaje de nivel de depuración |
Habilitar las marcas de tiempo
Puede haber algunos escenarios en los que sea necesario habilitar la marca de tiempo del registro, para ello lanzaríamos el siguiente comando:
1 |
dmesg -T |
En caso de necesitar la marca de tiempo junto con los niveles de criticidad, usaríamos las opciones T y x de la siguiente forma:
1 |
dmesg -Tx |
Monitorizar los registros en tiempo real
Para ver el registro en tiempo real utilizaremos la opción follow como en el siguiente ejemplo:
1 |
dmesg --follow |
Y en caso de querer también la marca de tiempo y el nivel de criticidad lo haríamos con el siguiente comando:
1 |
dmesg -Tx --follow |
Mostrar el búfer de mensajes sin formato
En ocasiones, tal vez necesitemos ver los registros sin formato. Esto hará que los muestre más rápido ya que no tiene que procesar los mismos para parsear o mostrar la información de una forma determinada. Para ello utilizaremos la opción -r como en el siguiente ejemplo:
1 |
dmesg -r |
Forzar el uso de syslog
En algunas situaciones, es posible que queramos que dmesg obtenga los registros de syslog en lugar de hacerlo de /dev/kmsg como lo hace por defecto. Para ello simplemente tenemos que utilizar la opción -S como en el siguiente ejemplo:
1 |
dmesg -S |
De todas formas, los valores del registro se almacenarán en el fichero /var/log/dmesg por si queremos consultar los mismos en un momento concreto.
Y esto ha sido todo por el momento. Espero les sea de utilidad y les ayude en su día a día. Y por último, como siempre, cualquier duda, sugerencia u opinión es bienvenida en los comentarios.