温馨提示×

centos清理系统日志的步骤

小樊
52
2025-09-24 09:11:35
栏目: 智能运维

1. 使用journalctl命令清理(推荐)
journalctl是systemd的日志管理工具,可高效清理systemd-journald生成的日志(默认存储路径:/var/log/journal/)。

  • 查看当前日志磁盘占用journalctl --disk-usage(显示日志总大小,如“1.2G”)。
  • 按时间清理旧日志
    • 保留最近1周日志:journalctl --vacuum-time=1week(删除1周前的所有日志);
    • 保留最近3天日志:journalctl --vacuum-time=3d(更短周期清理,适合频繁清理场景)。
  • 按大小清理旧日志
    • 保留最近100MB日志:journalctl --vacuum-size=100M(自动删除超出大小的旧日志,适合固定存储限制)。
  • 清理特定服务/用户日志
    • 清理ssh.service的日志:journalctl --vacuum-time=1week --unit=ssh.service
    • 清理用户ubuntu的日志:journalctl --vacuum-time=1week --user=ubuntu(避免影响系统级日志)。

2. 手动清理/var/log目录下的日志文件
/var/log是CentOS系统日志的主要存储目录,包含messages(系统综合日志)、secure(安全认证日志)、maillog(邮件服务日志)等关键文件。

  • 备份并清空单个日志文件(以messages为例):
    sudo cp /var/log/messages /var/log/messages.bak # 备份原日志 sudo cat /dev/null > /var/log/messages # 清空文件内容(保留文件结构) 
  • 批量清空多个常见日志文件(谨慎操作,避免误删):
    sudo sh -c 'cat /dev/null > /var/log/messages; cat /dev/null > /var/log/secure; cat /dev/null > /var/log/maillog; cat /dev/null > /var/log/cron; cat /dev/null > /var/log/boot.log' 
  • 注意事项
    • 手动删除前务必确认日志无重要信息(如故障排查记录);
    • 删除后若需重新生成日志,可重启对应服务(如systemctl restart rsyslog)。

3. 配置logrotate自动轮转日志
logrotate是CentOS默认的日志轮转工具,可实现“定期压缩、删除旧日志”的自动化管理,避免日志文件无限增长。

  • 修改默认配置(编辑/etc/logrotate.conf):
    sudo vi /etc/logrotate.conf 
    关键参数说明(取消注释并调整):
    • rotate 7:保留最近7个日志文件;
    • compress:压缩旧日志(节省空间);
    • missingok:日志文件不存在时不报错;
    • notifempty:日志为空时不轮转。
  • 自定义服务日志轮转(以rsyslog为例,编辑/etc/logrotate.d/rsyslog):
    sudo vi /etc/logrotate.d/rsyslog 
    示例配置(每天轮转,保留7天,压缩):
    /var/log/messages { daily rotate 7 compress missingok notifempty create 640 root adm # 轮转后创建新文件,权限640,属主root,属组adm } 
  • 手动触发轮转(验证配置是否生效):
    sudo logrotate -f /etc/logrotate.conf # 强制立即轮转 

4. 设置定时任务自动清理
通过cron定时运行清理脚本,实现“无人值守”的日志管理(如每天凌晨3点清理30天前的.log文件)。

  • 创建清理脚本(如/usr/local/bin/log_cleanup.sh):
    sudo vi /usr/local/bin/log_cleanup.sh 
    脚本内容(清理/var/log下30天未修改的.log文件):
    #!/bin/bash find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \; 
  • 赋予脚本执行权限
    sudo chmod +x /usr/local/bin/log_cleanup.sh 
  • 添加cron定时任务(编辑crontab):
    sudo crontab -e 
    添加以下行(每天凌晨3点执行脚本):
    0 3 * * * /usr/local/bin/log_cleanup.sh 

注意事项

  • 权限问题:清理系统日志需root权限(使用sudo);
  • 备份优先:手动删除前务必备份重要日志(如/var/log/messages.bak);
  • 避免过度清理:保留足够日志(如1周或7天),便于故障排查;
  • 监控磁盘空间:定期使用df -h检查磁盘使用情况,及时调整清理策略。

0