温馨提示×

CentOS message日志为何过大

小樊
46
2026-07-20 15:58:15
栏目: 智能运维

CentOS 中 /var/log/messages 日志过大,通常是由系统或服务产生大量日志导致的。下面按常见原因 → 排查方法 → 解决办法来说明。


一、常见原因

1. 某个服务疯狂写日志(最常见)

  • 服务异常或配置错误
  • 比如:
    • sshd 被暴力破解
    • cron 执行失败
    • network / firewalld 异常
    • 自定义脚本不断报错

2. 日志级别设置过低

  • 系统把 debug / info 级别日志全部写入 messages
  • 常见于调试阶段忘记关闭

3. rsyslog 配置不当

  • 所有日志都打到 messages
  • 没有按服务拆分

4. 日志未轮转(logrotate 失效)

  • messages 没有按大小或时间切割
  • 常见于:
    • logrotate 未执行
    • 磁盘只读
    • 自定义配置错误

5. 内核或硬件问题

  • 网卡、磁盘、内存报错
  • 例如:
    eth0: link up/down
    disk error
    Out of memory
    

二、快速排查方法

1. 查看日志大小

ls -lh /var/log/messages*

2. 查看最近日志内容(重点)

tail -n 100 /var/log/messages

或实时查看:

tail -f /var/log/messages

3. 找出“谁”在疯狂写日志

grep -c "" /var/log/messages | wc -l

按服务统计(示例):

awk '{print $5}' /var/log/messages | sort | uniq -c | sort -nr | head

常见输出:

sshd[1234]
cron[5678]
kernel

三、常见案例与处理

✅ 案例 1:SSH 被暴力破解

日志示例:

sshd[1234]: Failed password for root from 1.2.3.4 port 22

✅ 解决:

  • 使用 fail2ban
  • 修改 SSH 端口
  • 禁用 root 登录

✅ 案例 2:cron 任务报错

CRON[1234]: (root) CMD (/bad/script.sh)

✅ 解决:

  • 检查 crontab
crontab -l
  • 修复脚本或关闭无用任务

✅ 案例 3:日志没有轮转

检查 logrotate:

cat /etc/logrotate.d/syslog

手动测试:

logrotate -vf /etc/logrotate.conf

✅ 常见修复:

/var/log/messages {
    size 100M
    rotate 7
    compress
    missingok
    notifempty
    postrotate
        /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
    endscript
}

✅ 案例 4:rsyslog 配置问题

查看:

grep messages /etc/rsyslog.conf

避免:

*.*    /var/log/messages

✅ 建议:

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

四、临时清理(不推荐长期依赖)

> /var/log/messages
systemctl restart rsyslog

⚠ 注意:

  • 不要直接 rm
  • 否则 rsyslog 可能继续写旧 inode

五、总结一句话

CentOS messages 日志过大,90% 是因为某个服务异常或日志未轮转。

如果你愿意,可以把 最近 30 行 messages 日志贴出来,我可以帮你精准判断是哪一个服务在“刷屏”。

0