레벨별로 필터링된 printk 메시지를 표시하는 방법은 무엇입니까?

레벨별로 필터링된 printk 메시지를 표시하는 방법은 무엇입니까?

ALERT 레벨에 로드될 때 printk를 수행하고 INFO 레벨에 릴리스될 때 또 다른 printk를 수행하는 hello word 모듈을 작성했습니다.

#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

이 명령을 사용하면 메시지를 볼 수 있지만 메시지를 수준별로 필터링하려면 어떻게 해야 합니까?

커널 3.16.4와 함께 Ubuntu 14.04를 사용하고 있습니다.

그런 다음 다음을 사용하여 메시지를 콘솔에 인쇄하려고했습니다.

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

그러나 콘솔에 어떤 메시지도 인쇄하지 않습니다. dmesg -n 경고를 사용하여 콘솔 수준을 설정하려고 했지만 작동하지 않으므로 dmesg 또는 /proc/sys/kernel/printk로 콘솔 수준을 설정하는 것이 무엇인지 잘 모르겠습니다.

이 레벨을 어떻게 효율적으로 사용할 수 있나요?

당신의 도움을 주셔서 감사합니다

답변1

Ubuntu 16.04, util-linux 2.27.1에서는 다음을 수행할 수 있습니다.

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

어디:

  • -w메시지가 오면 따라가세요
  • --level표시할 수준을 제한합니다.
  • --raw메시지 시작 부분에 레벨을 표시합니다. 예:<3>

관련 정보