Red Hat Training

A Red Hat training course is available for RHEL 8

13.2. 日志级别和内核日志记录上的 printk 角色

内核报告的每条消息都有一个与它关联的日志级别,用于定义消息的重要性。如什么是内核环缓冲区中所述,内核环缓冲会收集所有日志级别的内核消息。kernel.printk 参数用于定义缓冲区中哪些消息打印到控制台中。

日志级别值按以下顺序划分:

  • 0 - 内核紧急。系统无法使用。
  • 1 - 内核警报。必须立即采取行动。
  • 2 - 内核条件被视为关键。
  • 3 - 常规内核错误条件。
  • 4 - 常规内核警告条件。
  • 5 - 内核发现一个正常但可能需要考虑的状况。
  • 6 - 内核信息。
  • 7 - 内核调试级别信息。

默认情况下,RHEL 8 中的 kernel.printk 包含以下四个值:

# sysctl kernel.printk
kernel.printk = 7	4	1	7

该四个值定义了以下内容:

  1. value.控制台日志级别,定义打印到控制台的消息的最低优先级。
  2. value.消息没有显式附加日志级别的默认日志级别。
  3. value.为控制台日志级别设置最低的日志级别配置。
  4. value.在引导时为控制台日志级别设置默认值。

    以上每个值都定义了处理错误消息的不同规则。

重要

默认的 7 4 1 7 printk 值可以更好地调试内核活动。但是,与串行控制台结合使用时,此 printk 设置可能会导致大量 I/O 突发,从而导致 RHEL 系统暂时变得不响应。为避免这种情况,把 printk 值设置为 4 4 1 7 通常可以正常工作,但其代价是丢失额外的调试信息。

另请注意,某些内核命令行参数(如 quietdebug)会更改默认的 kernel.printk 值。

其它资源

  • syslog(2) 手册页