printk 的等级
时间: 2024-02-10 13:09:31 浏览: 214
printk 是 Linux 内核中用于打印消息的函数,它可以根据不同的等级来控制打印的详细程度。Linux 内核中定义了 8 个不同的 printk 等级,分别是:
1. KERN_EMERG:紧急情况,系统无法使用。
2. KERN_ALERT:需要立即采取行动的情况。
3. KERN_CRIT:临界条件,可能会导致系统故障。
4. KERN_ERR:错误条件,但不会影响系统的正常运行。
5. KERN_WARNING:警告条件,可能会影响系统的正常运行。
6. KERN_NOTICE:普通但重要的条件。
7. KERN_INFO:提供有关系统状态的信息。
8. KERN_DEBUG:用于调试目的的详细信息。
在 Linux 内核中,有一个名为 console_loglevel 的变量,它决定了哪些 printk 消息可以输出到终端上。只有当 printk 消息的等级高于或等于 console_loglevel 时,才会输出到终端上。
你可以通过修改 /proc/sys/kernel/printk 文件来设置 console_loglevel 的值,也可以使用 echo 命令来修改。例如,使用以下命令将 console_loglevel 设置为 3:
```
echo 3 > /proc/sys/kernel/printk
```
这样,只有等级为 KERN_EMERG、KERN_ALERT 和 KERN_CRIT 的 printk 消息才会输出到终端上。
相关问题
内核printk等级设置
内核提供了丰富的输出调试信息的方式,其中就包括 printk 函数。printk 函数可以在内核运行时输出信息,用于调试和排错。
printk 函数可以设置不同的输出等级,以便过滤输出信息。在内核中,一共定义了 8 个不同的输出等级。按照从高到低的顺序,这 8 个输出等级依次为:
1. KERN_EMERG(紧急)
2. KERN_ALERT(警戒)
3. KERN_CRIT(严重)
4. KERN_ERR(错误)
5. KERN_WARNING(警告)
6. KERN_NOTICE(通知)
7. KERN_INFO(信息)
8. KERN_DEBUG(调试信息)
可以通过在 printk 函数中传入不同的输出等级来设置输出信息的级别。例如,使用 printk(KERN_ERR "Error message\n") 可以输出一个错误信息,而使用 printk(KERN_DEBUG "Debug message\n") 只有在设置了适当的调试等级时才会输出。
在系统运行时,可以通过修改 /proc/sys/kernel/printk 文件来调整输出等级。例如,echo "4 4 1 7" > /proc/sys/kernel/printk 可以设置输出等级为 ERR、WARNING、NOTICE 和 INFO,不输出 DEBUG 信息。这种方式的输出等级设置会在系统重启后失效。
如何修改linux内核代码的printk等级
您可以通过修改内核的配置文件来修改printk的等级。首先,您需要进入内核的源代码目录,然后运行make menuconfig命令以打开内核配置菜单。在菜单中,选择"Kernel Hacking"选项,然后选择"Kernel debugging"选项。在该选项下,您可以找到"Default message log level"选项,将其设置为您所需要的等级即可。保存并退出菜单,然后重新编译和安装内核即可生效。
阅读全文