レベルごとにフィルタリングされた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 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>

おすすめ記事