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

Wim*_*eka 11 logs kernel

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

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

Ste*_*itt 21

/proc/kmsg提供内核日志缓冲区的仅根、只读、消耗视图。相当于syslog(2)SYSLOG_ACTION_READ动作调用。如联机帮助页所述proc

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

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

至于为什么两个都存在,为什么一个是/proc(虽然不是过程相关的),一个在dev/proc/kmsg是内核内部的一个旧方便“出口”,而且/dev/kmsg一个更近此外,设计成一个易用的界面到日志缓冲区.