在 CentOS(以及 RHEL 系列)里,/var/log/messages 为空或没有内容,通常不是文件坏了,而是日志机制发生了变化或配置导致不写这里。常见原因和对应排查方法如下:
rsyslog / systemd-journald 分离(最常见)CentOS 7/8 默认:
rsyslog 写入 /var/log/messagessystemd-journaldsystemctl status rsyslog
如果:
inactive (dead) → messages 不会更新启动并开机自启:
systemctl start rsyslog
systemctl enable rsyslog
查看:
grep messages /etc/rsyslog.conf /etc/rsyslog.d/*
正常应有类似:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
如果没有,说明被改过或删了。
如果配置了:
# /etc/systemd/journald.conf
Storage=volatile
或
ForwardToSyslog=no
那么:
journalctl/var/log/messages 可能一直是空的查看日志请用:
journalctl -xe
检查:
ls -l /var/log/messages*
如果:
messages 大小为 0messages-20240101 但当前为空可能是:
logrotate 误删> /var/log/messages检查:
getenforce
ausearch -m AVC -ts recent
如果是 SELinux 拒绝:
restorecon -v /var/log/messages
df -h
df -i
满了也会导致日志不写。
/var/log/messages 天然为空journalctl 或 stdout| 情况 | 表现 |
|---|---|
| rsyslog 没开 | messages 静止 |
| 用了 journald | 要用 journalctl |
| 配置被改 | 没 messages 规则 |
| 容器 | 本来就没 |
如果你愿意,可以贴一下:
cat /etc/rsyslog.conf
systemctl status rsyslog
ls -l /var/log/messages
我可以直接帮你判断是哪一种原因。