我正在学习journald
和rsyslog
,在阅读时我看到可以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
是最近添加的,设计为日志缓冲区的可用接口。