El kernel de Linux es el núcleo del sistema operativo que controla el acceso a los recursos del sistema, como la CPU, los dispositivos de E/S, la memoria física y los sistemas de archivos. El núcleo escribe varios mensajes en el búfer de anillo del núcleo 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 una vez que el búfer está lleno, se sobrescriben los registros más antiguos.
El dmesg
La utilidad de línea de comandos se utiliza para imprimir y controlar el búfer de anillo del kernel en Linux y otros sistemas operativos similares a Unix. Es útil para examinar los mensajes de arranque del kernel y depurar problemas relacionados con el hardware.
En este tutorial, cubriremos los conceptos básicos de dmesg
comando.
Usando el dmesg
Comando #
La sintaxis para dmesg
El comando es el siguiente:
dmesg [OPTIONS]
Cuando se invoca sin ninguna opción dmesg
escribe todos los mensajes del búfer de anillo del núcleo en la salida estándar:
dmesg
De forma predeterminada, todos los usuarios pueden ejecutar dmesg
dominio. Sin embargo, en algunos sistemas, el acceso a dmesg
puede estar restringido para usuarios no root. En esta situación, al invocar dmesg
obtendrá un mensaje de error como el siguiente:
dmesg: read kernel buffer failed: Operation not permitted
El 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, configúrelo 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, canalice la salida a una utilidad de buscapersonas como less
o more
:
dmesg --color=always | less
El --color=always
se utiliza para conservar la salida en color.
Si desea filtrar los mensajes del búfer, use grep
. Por ejemplo, para ver solo los mensajes relacionados con USB, debe escribir:
dmesg | grep -i usb
dmesg
lee los mensajes generados por el kernel desde el /proc/kmsg
archivo virtual Este archivo proporciona una interfaz para el búfer de anillo del kernel y solo puede ser abierto por un proceso. Si syslog
el proceso se está ejecutando en su sistema e intenta leer el archivo con cat
, o less
, el comando se colgará.
El syslog
daemon vuelca los mensajes del núcleo a /var/log/dmesg
, por lo que también puede usar ese archivo de registro:
cat /var/log/dmesg
Formando dmesg
Salida #
El dmesg
El comando proporciona una serie de opciones que lo ayudan a formatear y filtrar la salida.
Una de las opciones más utilizadas de dmesg
es -H
(--human
), que permite la salida legible por humanos. Esta opción canaliza la salida del comando a un buscapersonas:
dmesg -H
Para imprimir marcas de tiempo legibles por humanos, use -T
(--ctime
) opción:
dmesg -T
[Mon Oct 14 14:38:04 2019] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
El formato de las marcas de tiempo también se puede configurar usando --time-format <format>
opción, que puede ser ctime, reltime, delta, notime o iso. Por ejemplo, para usar el formato delta, escribiría:
dmesg --time-format=delta
También puedes combinar dos o más opciones:
dmesg -H -T
Para ver la salida del dmesg
comando en tiempo real use el -w
(--follow
) opción:
dmesg --follow
Filtrado dmesg
Salida #
Puede restringir el dmesg
salida a instalaciones y niveles dados.
La instalación representa el proceso que creó el mensaje. dmesg
admite las siguientes funciones de registro:
kern
- mensajes del núcleouser
- mensajes a nivel de usuariomail
- sistema de correodaemon
- demonios del sistemaauth
- mensajes de seguridad/autorizaciónsyslog
- mensajes syslogd internoslpr
- subsistema de impresora de líneanews
- subsistema de noticias de la red
El -f
(--facility <list>
) le permite limitar la salida a instalaciones específicas. La opción acepta una o más instalaciones separadas por comas.
Por ejemplo, para mostrar solo los mensajes de los demonios del kernel y del sistema, usaría:
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 usaralert
- se deben tomar medidas inmediatamentecrit
- condiciones críticaserr
- condiciones de errorwarn
- condiciones de advertencianotice
- condición normal pero significativainfo
- informativodebug
- mensajes de nivel de depuración
El -l
(--level <list>
) restringe la salida a niveles definidos. La opción acepta uno o más niveles separados por comas.
El siguiente comando muestra solo los mensajes críticos y de error:
dmesg -l err,crit
Borrar el búfer de anillo #
El -C
(--clear
) le permite borrar el búfer circular:
sudo dmesg -C
Solo los usuarios root o con privilegios sudo pueden borrar el búfer.
Para imprimir el contenido del búfer antes de borrar, use -c
(--read-clear
) opción:
sudo dmesg -c
Si desea guardar el dmesg
actual inicia sesión en un archivo antes de borrarlo, redirige la salida a un archivo:
dmesg > dmesg_messages
Conclusión #
El dmesg
El comando le permite ver y controlar el búfer de anillo del kernel. Puede ser muy útil para solucionar problemas de kernel o hardware.
Escribe man dmesg
en su terminal para obtener información sobre todos los dmesg
disponibles opciones.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.