内核环形缓冲区相对于 rsyslog 位于何处?

内核环形缓冲区相对于 rsyslog 位于何处?

rsyslog只是内核环形缓冲区之上的抽象层吗?或者内核环形缓冲区是它自己的实体并且rsyslog其交互就像任何其他“应用程序”一样?

答案1

尽管各种文档(包括 参考资料man dmesg)将其称为“内核环形缓冲区”,但最好将其称为内核日志缓冲区,因为“环形缓冲区”是一个通用术语,而且我相信内核也使用环形缓冲区。各种完全不相关的事物的缓冲区。 “printk 缓冲区”也是合适的,在内核空间函数用来写入它之后。

无论如何,它驻留在内核空间中,通过 提供读取接口,/proc/kmsg并通过 提供读写接口/dev/kmsg。所以如果你以root身份去:

echo "Hello Kernel!" > /dev/ksmg

如果您随后就会看到它cat /dev/ksmg(但是,您可能不会在任何日志中看到这一点 - 请参阅下面 Matthew Phipps 的评论以了解可能的原因)。这是原始输出,与您dmesg在日志文件中看到的内容并不完全相同。有一点一些文档关于这一点随内核源代码一起提供。如果 (r)syslog 正在运行,建议从/proc/kmsg(与 不同)读取。/dev/ksmg

Rsyslog 是众多日志之一系统日志Linux 上常用的实现。这些是用户态应用程序,/proc/ksmg通过套接字从内核消息和其他用户态进程获取消息/dev/log

相关内容