温馨提示×

如何清理CentOS message日志

小樊
57
2026-08-04 05:33:46
栏目: 智能运维

在 CentOS 系统中,/var/log/messages 日志文件用于记录系统级别的通用消息(包括服务启动、内核消息等)。随着时间推移,该文件可能会变得很大。以下是几种安全、推荐的清理方式,按使用场景说明。


一、查看当前日志大小(先确认)

ls -lh /var/log/messages*

二、推荐方式(安全、标准)

✅ 方法 1:使用 logrotate(最推荐)

CentOS 默认已配置 logrotate,通常位于:

/etc/logrotate.d/syslog

手动触发一次轮转

logrotate -f /etc/logrotate.d/syslog

✅ 效果:

  • 当前 messages 会被重命名(如 messages.1
  • 自动创建新的 messages
  • 不会中断系统日志服务

✅ 方法 2:清空日志文件(不删除文件)

适合临时快速清理:

sudo truncate -s 0 /var/log/messages

或:

sudo > /var/log/messages

✅ 优点:

  • 不删除文件
  • 不影响 rsyslog 继续写入

三、不推荐但可用的方法

⚠️ 方法 3:直接删除(不建议)

rm -f /var/log/messages

⚠️ 风险:

  • rsyslog 可能继续写入旧文件句柄
  • 需要重启 rsyslog 才能恢复
  • 可能导致日志短暂丢失

如果已经删除,可恢复:

systemctl restart rsyslog

四、清理历史轮转日志(messages.1 / messages.2 等)

rm -f /var/log/messages.*

或只保留最近几个:

ls -t /var/log/messages.* | tail -n +5 | xargs rm -f

五、长期控制日志大小(推荐配置)

编辑 logrotate 配置:

vim /etc/logrotate.d/syslog

示例(限制大小 + 保留天数):

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

然后测试:

logrotate -d /etc/logrotate.d/syslog

六、确认 rsyslog 服务状态

systemctl status rsyslog

七、总结(推荐顺序)

场景 推荐方式
日常维护 logrotate
临时清理 truncate -s 0
删除旧日志 删除 messages.*
长期管理 修改 logrotate 配置

如果你使用的是 CentOS 7 / 8 / Streamrsyslog / journald 混合环境,可以告诉我,我可以给你更精确的方案。

0