![用于读取内核日志消息的文件描述符?](https://linux22.com/image/73197/%E7%94%A8%E4%BA%8E%E8%AF%BB%E5%8F%96%E5%86%85%E6%A0%B8%E6%97%A5%E5%BF%97%E6%B6%88%E6%81%AF%E7%9A%84%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%9F.png)
我使用syslog
SYSLOG_ACTION_READ 来读取内核日志消息。
我想知道是否可以“获取”一个文件描述符来发送内核日志(就像 syslog 提供的那样)。事实上,我想select
在我的应用程序中监视这个文件描述符(因为我已经在监视其他与 udev 相关的文件描述符)
此外,我想知道是否有配置空间(例如设置日志级别、以人类可读的形式格式化时间戳)。
如果我的部分或全部要求都无法实现,您会推荐什么样的方法?
答案1
跑去strace dmesg
看看它在读什么。
# strace -e '!read,write' dmesg >/dev/null
…
open("/dev/kmsg", O_RDONLY|O_NONBLOCK) = 3
…
没有参数可以更改格式或过滤消息,这是从该设备读取的程序的工作。
如果您正在运行 syslog,那么观察它发出的日志(您可以将其记录到管道)是有意义的,而不是直接读取内核日志。