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
。