在 CentOS 中,/var/log/messages 为空,通常不是系统已经不记录日志,而是日志服务、配置或路径发生了变化。下面按常见原因逐一说明(区分 CentOS 7/8/Stream)。
CentOS 默认使用 rsyslog 写 /var/log/messages。
systemctl status rsyslog
如果没运行:
systemctl start rsyslog
systemctl enable rsyslog
检查配置:
grep -R "messages" /etc/rsyslog.conf /etc/rsyslog.d/
正常情况下应有类似:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
如果没有,可手动添加并重启:
systemctl restart rsyslog
从 CentOS 7 开始,日志主要由 systemd-journald 管理:
journalctl
如果 rsyslog 没启用,/var/log/messages 就会是空的。
✅ 这是最常见原因
CentOS 8 最小化安装可能没装 rsyslog:
rpm -qa | grep rsyslog
安装:
yum install -y rsyslog
systemctl enable --now rsyslog
查看轮转配置:
cat /etc/logrotate.d/syslog
如果刚轮转完,messages 可能是 0 字节。
ls -l /var/log/messages
正常应为:
-rw-r----- root root
修复权限:
chown root:root /var/log/messages
chmod 600 /var/log/messages
systemctl restart rsyslog
df -h
df -i
如果满了,rsyslog 无法写入。
在 CentOS Stream 9 / RHEL 9 中:
/var/log/messages 可能完全废弃journalctl
或:
/var/log/journal/
systemctl status rsyslog
journalctl -xe
ls -lh /var/log/messages
grep messages /etc/rsyslog.conf
CentOS 中 messages 为空,最常见的原因是:系统使用 systemd-journald,而 rsyslog 未启用或未安装。
如果你愿意,可以告诉我:
cat /etc/os-release)我可以给你精确到版本的解决方案。