Cómo verificar el estado del Kernel con Dmesg en Linux

1 mar 2021 3 min di lettura
Cómo verificar el estado del Kernel con Dmesg en Linux
Indice dei contenuti

Introducción

El kernel de Linux es el núcleo del sistema operativo que controla el acceso a los recursos del sistema, como CPU, dispositivos de E /S, memoria física y sistemas de archivos. El kernel escribe varios mensajes en el búfer del kernel durante el proceso de arranque y cuando el sistema se está ejecutando. Estos mensajes incluyen diversa información sobre el funcionamiento del sistema.

El búfer de anillo del kernel es una parte de la memoria física que contiene los mensajes de registro del kernel. Tiene un tamaño fijo, lo que significa que cuando el búfer está lleno, se sobrescriben los registros más antiguos.

La dmesg comando dmesg se usa para imprimir y verificar el búfer de anillo del kernel en Linux y otros sistemas operativos similares a Unix. Es útil para examinar los mensajes de inicio del kernel y depurar problemas relacionados con el hardware.

En este tutorial, cubriremos los conceptos básicos del comando dmesg

Usando el comando dmesg

La sintaxis del dmesg es la siguiente:

dmesg [OPTIONS]

Cuando se invoca sin ninguna opción, dmesg escribe todos los mensajes del búfer de anillo del kernel en la salida estándar:

dmesg

De forma predeterminada, todos los usuarios pueden ejecutar el comando dmesg Sin embargo, en algunos sistemas, el acceso a dmesg puede estar restringido para usuarios que no sean root. En esta situación, al invocar dmesg, recibirá un mensaje de error como el siguiente:

dmesg: read kernel buffer failed: Operation not permitted

kernel.dmesg_restrict parámetro del kernel kernel.dmesg_restrict especifica si los usuarios sin privilegios pueden usar dmesg para ver los mensajes del búfer de registro del kernel. Para eliminar las restricciones, establézcalo en cero:

sudo sysctl -w kernel.dmesg_restrict=0

Por lo general, la salida contiene muchas líneas de información, por lo que solo se puede ver la última parte de la salida. Para ver una página a la vez, redirija la salida a una utilidad de paginación como less o more:

dmesg --color=always | less

El --color=always se usa para mantener la salida coloreada.

Si desea filtrar los mensajes en el búfer, use grep. Por ejemplo, para ver solo los mensajes relacionados con USB, escriba:

dmesg | grep -i usb

dmesg lee los mensajes generados por el kernel desde el archivo virtual /proc/kmsg. Este archivo proporciona una interfaz para el búfer de anillo del kernel y solo se puede abrir con un proceso. Si el syslog se está ejecutando en el sistema e intenta leer el archivo con cat o less, el comando se bloqueará.

El syslog vuelca los mensajes del kernel en /var/log/dmesg, por lo que ese archivo de registro también se puede utilizar:

cat /var/log/dmesg

Formatee la salida de dmesg

El dmesg proporciona una serie de opciones que le permiten formatear y filtrar la salida.

Una de las opciones más utilizadas de dmesg es -H ( --human ), que permite una salida legible por humanos:

dmesg -H

Para imprimir marcas de tiempo legibles por humanos, use la -T ( --ctime ):

dmesg -T
[Tue Jan 28 17:07:07 2020] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready

El formato de la marca de tiempo también se puede configurar usando la --time-format <format>, que puede ser ctime, reltime, delta, notime o iso. Por ejemplo, para usar el formato delta, escriba:

dmesg --time-format=delta

También puede combinar dos o más opciones:

dmesg -H -T

Para ver la salida del dmesg en tiempo real, use la -w ( --follow ):

dmesg --follow

Filtrar la salida de dmesg

Puede limitar la salida del dmesg a determinadas estructuras y niveles.

La función representa el proceso que creó el mensaje. dmesg admite las siguientes funciones de registro:

  • kern - mensajes del kernel
  • user - mensajes a nivel de usuario
  • mail - sistema de correo
  • daemon - demonios del sistema
  • auth - mensajes de seguridad /autorización
  • syslog - mensajes internos de syslogd
  • lpr - subsistema de impresora de línea
  • news - subsistema de noticias de la red

La -f ( --facility <list> ) le permite limitar la salida a estructuras específicas. La opción acepta una o más estructuras separadas por comas.

Por ejemplo, para ver solo los mensajes del demonio del sistema y del kernel, debe usar:

dmesg -f kern,daemon

Cada mensaje de registro está asociado con un nivel de registro que muestra la importancia del mensaje. dmesg admite los siguientes niveles de registro:

  • emerg - el sistema no se puede utilizar
  • alert: se deben tomar medidas de inmediato
  • crit - condición crítica
  • err - condiciones de error
  • warn - condiciones de advertencia
  • notice - condiciones normales pero significativas
  • info - informativo
  • debug - mensajes de nivel de depuración

La -l ( --level <list> ) limita la salida a niveles definidos. La opción acepta uno o más niveles separados por comas.

El siguiente comando muestra solo mensajes críticos y de error:

dmesg -l err,crit

Vaciar el búfer de anillo

La -C ( --clear ) borra el búfer de anillo:

sudo dmesg -C

Solo root o usuarios con privilegios de sudo pueden borrar el búfer.

Para imprimir el contenido del búfer antes de --read-clear -c (--read-clear):

sudo dmesg -c

Si desea guardar los dmesg en un archivo antes de eliminarlo, redirija la salida a un archivo:

dmesg > dmesg_messages

Conclusión

El dmesg permite ver y controlar el anillo de búfer del kernel. Puede ser muy útil para solucionar problemas de kernel o hardware.

Escriba man dmesg en la terminal para obtener información sobre todas las opciones disponibles del comando dmesg

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.