温馨提示×

centos message为何为空

小樊
33
2026-09-18 05:56:25
栏目: 智能运维

在 CentOS(以及 RHEL 系列)里,/var/log/messages 为空或没有内容,通常不是文件坏了,而是日志机制发生了变化或配置导致不写这里。常见原因和对应排查方法如下:


1. 使用了 rsyslog / systemd-journald 分离(最常见)

CentOS 7/8 默认:

  • 系统日志由 rsyslog 写入 /var/log/messages
  • 但很多日志先进入 systemd-journald

检查 rsyslog 是否在跑

systemctl status rsyslog

如果:

  • inactive (dead) → messages 不会更新

启动并开机自启:

systemctl start rsyslog
systemctl enable rsyslog

2. rsyslog 配置没写 messages

查看:

grep messages /etc/rsyslog.conf /etc/rsyslog.d/*

正常应有类似:

*.info;mail.none;authpriv.none;cron.none    /var/log/messages

如果没有,说明被改过或删了。


3. 日志被 journald 接管(CentOS 7/8 很常见)

如果配置了:

# /etc/systemd/journald.conf
Storage=volatile

ForwardToSyslog=no

那么:

  • 日志只进 journalctl
  • /var/log/messages 可能一直是空的

查看日志请用:

journalctl -xe

4. 文件被清空或轮转异常

检查:

ls -l /var/log/messages*

如果:

  • messages 大小为 0
  • messages-20240101 但当前为空

可能是:

  • logrotate 误删
  • 被人手动 > /var/log/messages

5. SELinux 导致 rsyslog 写不进去

检查:

getenforce
ausearch -m AVC -ts recent

如果是 SELinux 拒绝:

restorecon -v /var/log/messages

6. 磁盘或 inode 满了

df -h
df -i

满了也会导致日志不写。


7. CentOS Stream / 容器环境

  • 容器里通常没有 rsyslog
  • /var/log/messages 天然为空
  • 日志只在 journalctl 或 stdout

快速判断总结

情况 表现
rsyslog 没开 messages 静止
用了 journald 要用 journalctl
配置被改 没 messages 规则
容器 本来就没

如果你愿意,可以贴一下:

cat /etc/rsyslog.conf
systemctl status rsyslog
ls -l /var/log/messages

我可以直接帮你判断是哪一种原因。

0