printk打印等级
时间: 2023-06-21 16:19:13 浏览: 122
在 Linux 内核中,有多种不同的 printk() 打印等级(log level)可用于在日志中标识不同类型的消息,每个打印等级都有一个与之关联的数字值。这些打印等级及其对应的数字值如下:
- KERN_EMERG (0): 紧急情况,例如系统崩溃
- KERN_ALERT (1): 需要立即采取行动,例如硬件故障
- KERN_CRIT (2): 严重错误,可能导致系统故障
- KERN_ERR (3): 错误消息,但不会导致系统崩溃
- KERN_WARNING (4): 警告消息,例如硬件故障可能导致错误
- KERN_NOTICE (5): 通知消息,例如网络连接的建立和断开
- KERN_INFO (6): 信息消息,例如模块加载和卸载
- KERN_DEBUG (7): 调试消息,仅用于调试目的
在使用 printk() 函数时,可以通过在消息字符串前加上打印等级的前缀来指定消息的打印等级。例如,使用 KERN_ERR 打印等级打印一个错误消息可以这样做:
```
printk(KERN_ERR "Error message\n");
```
需要注意的是,内核可以通过设置日志级别(log level)来控制哪些类型的消息将被打印。只有打印等级大于或等于当前日志级别的消息才会被打印出来。可以通过 /proc/sys/kernel/printk 文件来设置日志级别。例如,将日志级别设置为 3 将只打印错误消息和更严重的消息。
相关问题
printk 的等级
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 消息才会输出到终端上。
ubuntu printk 打印
在Ubuntu中,如果你想让printk的输出信息显示在终端上,你可以按照以下步骤进行设置。首先,你需要以root权限运行以下命令来将控制台log等级设为最高的8:
```
echo "8" > /proc/sys/kernel/printk
```
接下来,你可以使用以下命令来实时查看内核日志:
```
tail -f /var/log/kern.log &
```
注意,这些设置需要root权限。另外,需要注意的是,默认情况下,printk的输出设备是/dev/console,而这个设备只能在内核中访问。用户使用的终端对应的是/dev/tty*。如果你在发行版Linux驱动开发中遇到了这个问题,可能是因为printk默认的输出设备是/dev/console,而终端对应的是/dev/tty*。你可以修改/etc/default/grub文件来解决这个问题,在GRUB_CMDLINE_LINUX_DEFAULT和GRUB_CMDLINE_LINUX这两行中添加以下内容:
```
console=tty0 console=ttyS0,115200n8
```
然后,保存文件并更新grub配置,最后重启系统生效。这样,你就可以在终端上看到printk的输出信息了。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [如何让 printk 打印到终端](https://blog.csdn.net/weixin_39591031/article/details/121640688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [printk调试信息无法打印到控制台](https://blog.csdn.net/qq_41115702/article/details/104657103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [ubuntu中printk打印信息](https://blog.csdn.net/u010340823/article/details/40514273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文