Como exibir mensagens impressas filtradas por nível à medida que elas surgem?

2

Eu escrevi um módulo de hello word que executa um printk quando é carregado no nível ALERT e outro printk quando é liberado com o nível 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);

Então eu estava tentando filtrar as mensagens do kernel pelo seu nível, eu fiz isso usando o dmesg -l, mas eu quero ver as mensagens como elas aparecem, então eu estava usando

tail -f /var/log/kern.log

Usando este comando, posso ver as mensagens, mas como posso filtrar as mensagens por nível?

Estou usando o Ubuntu 14.04 com o kernel 3.16.4

Tentei imprimir as mensagens no console usando:

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

Mas não imprime nenhuma mensagem no console. Tentei definir o nível do console usando o alerta dmesg -n, mas também não funciona, por isso não tenho certeza do que definir o nível do console pelo dmesg ou / proc / sys / kernel / printk.

Como posso usar esses níveis com eficiência?

Obrigado pela sua ajuda

    
por Lilás 09.10.2014 / 22:37

1 resposta

0

No Ubuntu 16.04, util-linux 2.27.1, você pode fazer:

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

onde:

  • -w segue as mensagens conforme elas são exibidas
  • --level restringe quais níveis serão exibidos
  • --raw mostra o nível no início da mensagem, por ex. como <3>
por 22.05.2018 / 14:05