私は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>