Eu escrevi um módulo hello word que executa um printk quando é carregado no nível ALERT e outro printk quando é lançado 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 por seu nível, fiz isso usando dmesg -l , mas quero ver as mensagens conforme elas aparecem, então 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 kernel 3.16.4
Tentei então 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 dmesg -n alert, mas também não funcionou, portanto, não tenho certeza do que a configuração do nível do console por dmesg ou /proc/sys/kernel/printk faz.
Como posso usar esses níveis de forma eficiente?
Obrigado pela ajuda
Responder1
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 chegam--level
restringe quais níveis serão exibidos--raw
mostra o nível no início da mensagem, por exemplo, como<3>