温馨提示×

centos清理策略有哪些推荐

小樊
46
2025-12-27 09:38:27
栏目: 智能运维

CentOS 清理策略推荐

一 核心清理清单

  • 包管理与仓库缓存
    • 清理 YUM/DNF 缓存:sudo yum clean all(或 sudo dnf clean all
    • 移除无用依赖:sudo yum autoremove
    • 删除旧内核(保留最新 1 个):sudo package-cleanup --oldkernels --count=1
  • 临时文件
    • 清理系统临时目录:sudo rm -rf /tmp/ /var/tmp/**
  • 日志与 journal
    • 限制 systemd 日志体积:sudo journalctl --vacuum-size=100M
    • 限制 journal 保留时间:sudo journalctl --vacuum-time=7d
    • 按服务保留时间:sudo journalctl --vacuum-by-date=2weeks --unit=nginx.service
  • 大文件定位与清理
    • 交互式定位大目录:sudo ncdu /
    • 查找大于 100MB 的文件:sudo find / -type f -size +100M -exec ls -lh {} ;
  • 可选图形化工具
    • 安装并使用 BleachBit:sudo yum install bleachbit && sudo bleachbit
      以上命令覆盖日常清理的高频动作,建议优先执行并纳入例行维护。

二 日志与 journal 的治理

  • 使用 logrotate 做按时间/大小轮转与压缩(示例)
    • 新建 /etc/logrotate.d/myapp
      /var/log/myapp/*.log {
          daily
          rotate 7
          compress
          missingok
          notifempty
          create 640 root adm
      }
      
  • 配置 systemd-journald 持久化与上限
    • 编辑 /etc/systemd/journald.conf:设置 SystemMaxUse=500M(或更小),必要时设置 ForwardToSyslog=no
    • 重启服务:sudo systemctl restart systemd-journald
  • 清理方式建议
    • 优先用 journalctl --vacuum-size / --vacuum-time 收缩日志,避免直接删除 /var/log/journal/ 下的活跃文件
    • 清理前可先备份:sudo cp -r /var/log /var/log_backup_$(date +%Y%m%d%H%M%S)
      通过“轮转 + 上限 + 定期收缩”的组合,可显著降低日志占用的波动与风险。

三 内存缓存与临时文件的注意事项

  • 清理页面/目录项/inode 缓存
    • 执行:sudo sync && echo 3 > /proc/sys/vm/drop_caches
    • 说明:会释放缓存,可能导致短时性能下降;仅在必要时、低负载时执行,不建议写入 cron 长期定时
  • 临时文件清理
    • 执行:sudo rm -rf /tmp/ /var/tmp/**
    • 注意:确保无业务正在使用相关临时文件,避免影响运行中任务
      缓存清理属于“权宜之计”,根本仍在于合理的日志与存储治理。

四 自动化与定期维护

  • 简单脚本示例(/usr/local/bin/cleanup.sh)
    #!/bin/bash
    set -e
    yum clean all
    yum autoremove -y
    package-cleanup --oldkernels --count=1
    journalctl --rotate
    journalctl --vacuum-size=100M
    journalctl --vacuum-time=7d
    rm -rf /tmp/* /var/tmp/*
    
    • 赋权并加入定时任务:sudo chmod +x /usr/local/bin/cleanup.sh;在 crontab -e 中加入
      0 2 * * * root /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
      
  • 建议的例行频率
    • 每日:日志轮转与 journal 收缩
    • 每周:包缓存清理、无用依赖清理
    • 每月:旧内核巡检与清理、备份与容量评估
      自动化能显著降低人为遗漏与运维成本,同时保留可审计日志。

五 容器与数据库场景的清理

  • Docker
    • 清理未使用资源:docker system prune -af --volumes(谨慎,会删除未使用镜像/容器/网络/卷)
  • 数据库与 Web 服务
    • 清理前先备份并尽量在维护窗口操作
    • 示例(以 httpd 为例):
      sudo systemctl stop httpd
      rm -rf /var/log/httpd/*
      sudo systemctl start httpd
      
    • 其他服务(如 nginx、mysqld)类似处理,确保业务可中断或已切换流量
      容器与数据库清理影响面较大,务必在确认影响与做好备份的前提下执行。

0