1.klogd的介绍
klogd 是一个专门截获并记录 Linux 内核消息的守护进程。
2.klogd的功能
(1)klogd的消息转发功能
klogd 将内核消息转发给 syslogd 进程,然后syslogd进程会将内核消息根据/etc/syslog.conf配置文件所设定的内容而进行分发。
(2)klogd的符号解析功能
klogd 会尝试将内核地址解析为对应的符号,默认情况下会去下面这些目录下去找寻符号表:
/boot/System.map /System.map /usr/src/linux/System.map
(3)klogd命令
在终端命令行中输入如下命令来实现相应功能:
-f file
将日志直接记录到指定的file中,而不是转发到 syslogd 进程。
-i
-I
要求当前正在运行的 klogd 守护进程重新装载内核符号表。
-i 用于让守护进程重新装载内核模块符号。
-I 用于让守护进程重新装载静态内核符号和内核模块符号。
-n
禁止自动后台运行,在 klogd 由 init 启动并直接被 init 控制的情况下必须使用此开关。
-o
klogd 在读取并记录所有内核消息缓冲区中的消息之后立即退出(不作为守护进程)。
-p
只要 klogd 检测到内核消息流中包含了一个 Oops 字符串,那么就重新加载内核符号表。
-s
可以通过两个途径获取内核消息: /proc 文件系统和 sys_syslog 系统调用接口。虽然两者本质上完全等价,但 klogd 会优先使用 /proc/kmsg 文件。这个开关则强制 klogd 使用系统调用获取内核消息。
-k file
将指定的 file 作为内核符号表文件,也就是System.map文件的位置。
-v
打印版本信息后退出。
-x
忽略 EIP 转换信息,这样就不需要读取 System.map 文件。
-2
当展开符号时打印两行,一行将地址转换为符号,一行是原始文本。这样就允许一些外部程序(比如ksymoops)在原始数据上做一些处理。