¿Cómo mostrar los mensajes printk filtrados por nivel a medida que van llegando?

¿Cómo mostrar los mensajes printk filtrados por nivel a medida que van llegando?

Escribí un módulo de hola palabra que realiza un printk cuando se carga en el nivel ALERTA y otro printk cuando se libera con el nivel INFO:

#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");

static int init_hello(void)
{
    printk(KERN_ALERT "init called in hello\n");
    return 0;
}

static void cleanup_hello(void)
{
    printk(KERN_INFO "cleanup called in hello\n");
}

module_init(init_hello);
module_exit(cleanup_hello);

Luego estaba intentando filtrar los mensajes del kernel por su nivel, lo hice usando dmesg -l, pero quiero ver los mensajes tal como aparecen, así que estaba usando

tail -f /var/log/kern.log

Usando este comando puedo ver los mensajes, pero ¿cómo puedo filtrar los mensajes por nivel?

Estoy usando Ubuntu 14.04 con kernel 3.16.4

Luego intenté imprimir los mensajes en la consola usando:

echo 7 7 7 7 > /proc/sys/kernel/printk

Pero no imprime ningún mensaje en la consola. Intenté configurar el nivel de consola usando dmesg -n alert, pero tampoco funciona, por lo que no estoy seguro de qué hace la configuración del nivel de consola mediante dmesg o /proc/sys/kernel/printk.

¿Cómo puedo utilizar estos niveles de manera eficiente?

Gracias por tu ayuda

Respuesta1

En Ubuntu 16.04, util-linux 2.27.1, puedes hacer:

dmesg --level err,warn --raw -w

dónde:

  • -wsigue los mensajes tal como vienen
  • --levelrestringe qué niveles se mostrarán
  • --rawmuestra el nivel al principio del mensaje, por ejemplo como<3>

información relacionada