“内核环形缓冲区”、“用户级别”、“日志级别”是什么概念?

“内核环形缓冲区”、“用户级别”、“日志级别”是什么概念?

我经常看到“内核环形缓冲区”、“用户级别”、“日志级别”等一些词一起出现。例如

/var/log/dmesg 包含内核环缓冲区信息。

/var/log/kern.log 仅包含任意日志级别的内核消息

/var/log/user.log 包含所有用户级别日志的信息

它们都是关于日志的吗?它们有何关联和不同?

通过“级别”,我会想象多个级别的层次结构?

“用户级别”与“用户空间”有关吗?

它们是否与运行级别或者保护环某种程度上来说?

答案1

是的,所有这些都与日志记录有关。不,这些都与运行级别或“保护环”无关。

内核将其日志保存在环形缓冲区中。这样做的主要原因是为了保存系统启动时的日志,直到 syslog 守护进程有机会启动并收集它们。否则,在 syslog 守护程序启动之前将不会记录任何日志。使用该命令可以随时查看该环形缓冲区的内容,并且其内容也会在syslog 守护进程启动时dmesg保存。/var/log/dmesg

所有非来自内核的日志在生成时都会发送到 syslog 守护程序,因此它们不会保存在任何缓冲区中。内核日志在生成时也会被 syslog 守护程序拾取,但它们也会继续保存(可以说是不必要的)到环形缓冲区。

日志级别可以查看记录在系统日志(3) 联机帮助页如下:

  • LOG_EMERG: 系统无法使用
  • 日志警报: 必须立即采取行动
  • LOG_CRIT:临界条件
  • 日志错误:错误条件
  • LOG_警告:警告条件
  • LOG_NOTICE:正常但重要的状况
  • 日志信息: 信息性消息
  • 日志调试:调试级消息

每个级别的设计都没有前一个级别“重要”。记录某一级别日志的日志文件也将记录所有更重要级别的日志。

/var/log/kern.log和(例如)之间的区别/var/log/mail.log与级别无关,而是与设施或类别有关。这些类别也记录在联机帮助页上。

答案2

至少回答您问题的第一部分dmesg

/var/log/dmesg存储“内核环形缓冲区”的内容,这是内核在引导时创建的内存缓冲区,用于存储一旦通过引导加载程序阶段就会生成的日志数据。

环形缓冲区是一种特殊的缓冲区,它的大小始终恒定,当新消息进入时会删除最旧的消息。存储在内核环形缓冲区中的文本是您第一次启动 Unix 时在屏幕上看到的闪烁内容- 类似控制台模式的机器(无闪屏,普利茅斯)。内核日志存储在内存缓冲区中,以便引导日志有地方可存放,直到系统自行引导syslog到守护程序可以接管的程度。

dmesgutil-linuxLinux下是kernel.org发布的系统维护工具必备包的一部分。根据dmesg(1)手册页,

dmesg 用于检查或控制内核环形缓冲区。

看:http://www.computerhope.com/unix/dmesg.htm

在“systemd”初始化下,此命令可用于打印内核环形缓冲区:
# journalctl --dmesg or journalctl -k,谢谢纠正@don_crissti

例如,发出该命令dmesg | grep -i ethernet 将解析内核环形缓冲区中的字符串“ethernet”。

我希望这至少对您询问的第一部分有所帮助。

相关内容