/proc/kmsg 和 /dev/kmsg 有什么区别?

/proc/kmsg 和 /dev/kmsg 有什么区别?

我正在学习journaldrsyslog,在阅读时我看到可以rsyslog从和中读取/dev/kmsg和。journald/dev/kmsg/proc/ksmg

我知道这些都是内核日志,但是/proc/kmsg和之间有什么区别/dev/kmsg?为什么一个看起来是进程,另一个看起来是设备?

答案1

/proc/kmsg提供仅限root、只读、消耗内核日志缓冲区的视图。相当于调用syslog(2)随着SYSLOG_ACTION_READ行动。正如中提到的联机proc帮助页,

进程必须具有超级用户权限才能读取此文件,并且只能有一个进程读取此文件。如果正在运行的 syslog 进程使用以下命令,则不应读取此文件syslog(2)用于记录内核消息的系统调用工具。

/dev/kmsg提供对相同内核日志缓冲区的访问,但以更易于使用的方式。每次打开都会跟踪读取,因此多个进程可以并行读取,并且在读取条目时不会从缓冲区中删除条目。/dev/kmsg还提供访问日志缓冲区,因此可用于向日志缓冲区添加条目。看文档/dev/kmsg了解详情。

至于为什么两者都存在,以及为什么一个在/proc(尽管与进程无关)而一个在 中dev/proc/kmsg是内核内部的一种旧的方便“导出”,并且/dev/kmsg最近添加的,设计为日志缓冲区的可用接口。

相关内容