default_console_loglevel
Linuxのポイントは何ですか?私は通常のデフォルトとして説明しますconsole_loglevel
。しかし、これが意味するところは、どこでも説明されたことを見たことがありません。
さらに、私と私が確認した他のほとんどのシステムでは、4つのログ変数の値は次のとおりです。
[root@localhost printk]# cat /proc/sys/kernel/printk
4 4 1 7
何も変更しなかったので、console_loglevel
(4)は(7)と同じでなければなりませdefault_consolle loglevel
んが、そうではありません。それでは、用途/意味は正確に何ですかdefault_console_loglevel
?
答え1
短い答え:loglevel=4
カーネルコマンドラインで設定されているか(確認)cat /proc/cmdline
実行されるecho 4 > /proc/sys/kernel/printk
initスクリプト(またはそれに対応するスクリプト)があります。
どちらの場合もdefault_console_loglevel
上書きされます。
長い答え:
を読むと、/proc/sys/kernel/printk
4つの数字が返されます。これはカーネルで定義されています。printkhint console_printk[4]
配列の要素として初期化済みコンパイル時に(printkc)、しかしこの配列は実行時に修正することができます。
この値は次のとおりです。
console_loglevel
(またはconsole_printk[0]
)。default_message_loglevel
(またはconsole_printk[1]
)。minimum_console_loglevel
(またはconsole_printk[2]
)。default_console_loglevel
(またはconsole_printk[3]
)。
console_loglevel
(console_printk[0]
)が最も重要です。現在のコンソールメッセージの優先順位の値。
これは、いつでもprintk
カーネルコードで呼び出しが行われることを意味します(これは次にも適用されます)。pr_warn
、、pr_info
など。)、実行時にその優先順位を比較し、現在の優先順位より厳密に低い場合はconsole_loglevel
コンソールに印刷されます。たとえば、5に設定した場合(例:KERN_警告)、KERN_ERR
値が4()以下の優先順位のみがコンソールに直接印刷されます。
この値は変更する必要がある唯一の値なので、たとえばを使用して書き込むときは、この値を5にecho 5 > /proc/sys/kernel/printk
設定します。console_loglevel
console_loglevel
CONSOLE_LOGLEVEL_DEFAULT
(or)とまったく同じで、コンパイル時に初期化されます。したがって、起動時のデフォルト値です。これはカーネルコンパイル時の設定(Kconfig)によって設定されます。default_console_loglevel
console_printk[3]
default_console_loglevel
console_loglevel
CONFIG_CONSOLE_LOGLEVEL_DEFAULT
このランタイムを構成可能にする(カーネルを再コンパイルする必要はありません)、このブート時間のデフォルト値を設定する別のメカニズムがあります。 (ここで数字は)カーネルコマンドラインの一部として渡されるとに初期化されます。これは変更されないため、この場合は自動的に無視され上書きされます。loglevel=x
x
console_loglevel
x
default_console_loglevel
完全性のために、他の2つの値は次のとおりです。
default_message_loglevel
(または):指定された優先順位のないコマンドのデフォルト値console_printk[1]
。printk
これはCONFIG_MESSAGE_LOGLEVEL_DEFAULT
Kconfig()を介して設定されます。コンパイル後は変更できません。minimum_console_loglevel
(またはconsole_printk[2]
):最小優先順位の値。 1にハードコードされており、変更できません。
注:この回答は4年間の回答のない質問に対する回答であり、質問の作成者にとっては役に立たない可能性があります。しかし、私の最初のGoogle検索結果なので、他の人にも役立つことを願っています。