在一台CentOS 8的Linux服务器上使用下面脚本判断BIOS层是否开启了numa时。尴尬的事情的发生了,这台CentOS 8上没有dmesg这个日志,但是可以通过命令dmesg查看相关日志。那么到底是什么情况呢?
[root@Zabbix log]# more /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@Zabbix log]#grep -i numa /var/log/dmesg
搜索资料时,在官方文档终于找到答案,因为这个资料需要账号才能访问,特将这个资料摘抄在此,方便查看!
The /var/log/dmesg file is not created during boot for Red Hat Enterprise Linux 8
环境
·Red Hat Enterprise Linux 8
问题
·On boot, there is no /var/log/dmesg file after install RHEL8.
·I can get dmesg file via command dmesg, is this new design for RHEL 8, or do I need to modify some configuration to generate it automatically?
决议
Re-enabling the /var/log/dmesg log file
1) Create a /etc/systemd/system/dmesg.service configuration file with the following contents
[Unit]
Description=Create /var/log/dmesg on boot
ConditionPathExists=/var/log/dmesg
[Service]
ExecStart=/usr/bin/dmesg
StandardOutput=file:/var/log/dmesg
[Install]
WantedBy=multi-user.target
2) Create the /var/log/dmesg file and verify SELinux contexts
# touch /var/log/dmesg
# restorecon -v /var/log/dmesg
3) Enable the service to start on boot
# systemctl enable dmesg
根源
By design, the /var/log/dmesg file is not generated during boot. The kernel ring buffer is captured within the systemd-journal as well as /var/log/messages, via the imjournal rsyslog plugin.
简单来说,CentOS 8在设计之初,在启动过程中不会生成/var/log/dmesg日志文件。 内核环形缓冲区在systemd-journal和日志/var/log/messages中捕获内核启动信息,通过imjournal rsyslog 插件捕获。当然你也可以通过上面设置生成/var/log/dmesg日志文件。
参考资料:
https://access.redhat.com/solutions/3748981