是否rsyslog
只是在内核环缓冲区之上的抽象层?还是内核环缓冲区是它自己的实体,并且其rsyslog
交互就像其他任何“应用程序”一样?
是否rsyslog
只是在内核环缓冲区之上的抽象层?还是内核环缓冲区是它自己的实体,并且其rsyslog
交互就像其他任何“应用程序”一样?
Answers:
尽管各种文档(包括man dmesg
)都将其称为“内核环形缓冲区”,但最好将其称为内核日志缓冲区,因为“环形缓冲区”是一个通用术语,我相信内核也使用ring各种完全不相关的事物的缓冲区。在用于写入它的内核空间函数之后,“ 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上常用的许多syslog实现之一。这些是userland应用程序,它们/proc/ksmg
通过套接字从其他userland进程获取内核消息和来自其他userland进程的消息/dev/log
。