我一直在尝试将 KERN_DEBUG 消息记录到 centos7 中的文件中,但没有成功。我可以从“dmesg”中获取它们,但不能从 /var/log/messages 或 /var/log/dmesg 获取它们
这是我可以用来测试的 MWE 内核模块:
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void) {
printk(KERN_DEBUG "Hello world!\n");
return 0;
}
void cleanup_module(void) {
}
以及相应的Makefile:
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我尝试通过修改 rsyslog 配置来添加另一个日志文件:
[root@centos7 ]# cat /etc/rsyslog.d/kern.conf
kern.* /var/log/kern.log
但即使重新启动 rsyslogd 后,它也不会填充。我将 SELinux 设置为强制执行,所以为了好玩,我触摸了该文件并从 /var/log/messages 复制了上下文:
[root@centos7 mwe]# ls -lZ /var/log/kern.log
-rw-r--r--. root root system_u:object_r:var_log_t:s0 /var/log/kern.log
当然,我从来没有遇到过任何 SELinux 错误,这只是在执行中运行时的下意识反应
有谁配置成功了吗?
答案1
Centos 7 使用journald 作为syslog,rsyslog 基本上被绕过了。
如果您想改用 rsyslog,请参阅:https://www.internetstaff.com/replace-journald-fedora-centos-redhat/