Как отображать сообщения printk, отсортированные по уровню, по мере их поступления?

Как отображать сообщения printk, отсортированные по уровню, по мере их поступления?

Я написал модуль hello word, который выполняет printk при загрузке на уровне ALERT и еще один printk при освобождении на уровне 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);

Затем я попытался отфильтровать сообщения ядра по его уровню, я сделал это с помощью dmesg -l, но я хочу видеть сообщения по мере их появления, поэтому я использовал

tail -f /var/log/kern.log

С помощью этой команды я могу видеть сообщения, но как мне отфильтровать сообщения по уровню?

Я использую Ubuntu 14.04 с ядром 3.16.4.

Затем я попытался вывести сообщения на консоль с помощью:

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

Но он не выводит никаких сообщений на консоль. Я пробовал установить уровень консоли с помощью dmesg -n alert, но это тоже не работает, поэтому я не уверен, что делает установка уровня консоли с помощью dmesg или /proc/sys/kernel/printk.

Как можно эффективно использовать эти уровни?

Спасибо за вашу помощь

решение1

В Ubuntu 16.04, util-linux 2.27.1, вы можете сделать:

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

где:

  • -wследит за сообщениями по мере их поступления
  • --levelограничивает, какие уровни будут отображаться
  • --rawпоказывает уровень в начале сообщения, например, как<3>

Связанный контент