温馨提示×

CentOS如何进行深度清理

小樊
33
2025-11-29 21:40:36
栏目: 智能运维

CentOS 深度清理实操指南

一 准备与风险

  • 操作前先备份重要数据与配置文件,清理过程中避免删除系统关键目录与正在使用的文件。
  • 优先使用包管理器(yum/dnf)与系统工具(如 systemd-tmpfiles、logrotate)执行清理,减少误删风险。
  • 以下命令默认需要 root 或在命令前加 sudo 执行。

二 标准清理流程

  • 查看空间占用:执行 df -h 确认分区使用率,再用 du -sh / | sort -h* 定位大目录。
  • 清理包管理缓存:执行 yum clean all;若为 CentOS 8+ 且使用 DNF,执行 dnf clean all
  • 删除无用依赖与孤立包:执行 yum autoremove;必要时用 package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y 清理“叶子”包(仅限已安装 yum-utils)。
  • 清理旧内核:先查看 rpm -q kernel;保留最近 2 个内核,执行 package-cleanup --oldkernels --count=2(仅限已安装 yum-utils)。
  • 清理临时文件:执行 systemd-tmpfiles --clean;必要时补充清理 /tmp/var/tmp(见下一节细化)。
  • 清理日志:对 journald 执行 journalctl --vacuum-time=2weeks;对 /var/log 的旧日志可结合 logrotate 或按时间截断/删除(见下一节细化)。
  • 清理内存页缓存(可选,非释放磁盘):执行 sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
  • 查找并处置大文件:执行 ncdu / 交互式定位大文件;或用 find / -type f -size +100M -exec ls -lh {} ; 列出大于 100MB 的文件,确认后删除。

三 关键目录与日志的细化处理

  • 临时文件
    • 推荐方式:使用 systemd-tmpfiles --clean,它会按 /etc/tmpfiles.d/*.conf 的规则安全清理(如 /tmp 14d 表示清理 14 天未访问的文件)。
    • 手动清理(谨慎):/tmp/var/tmp 可直接清理,但需确保无程序占用;可按时间清理,如 find /tmp -type f -mtime +7 -deletefind /var/tmp -type f -mtime +7 -delete
  • 日志文件
    • journald:执行 journalctl --vacuum-time=2weeks–vacuum-size=500M 限制日志体积与保存时间。
    • /var/log:优先使用 logrotate 进行轮转与压缩;如需临时释放空间,可对指定日志执行 truncate -s 0 /var/log/file.log,或删除已轮转的旧日志(如 .gz、.old),避免直接 rm -rf /var/log/*。

四 自动化与长期维护

  • 定时清理脚本示例(/usr/local/bin/cleanup.sh):
    • 内容:
      #!/bin/bash
      set -e
      yum clean all || true
      command -v dnf >/dev/null && dnf clean all || true
      yum autoremove -y || true
      if command -v package-cleanup >/dev/null; then
        package-cleanup --oldkernels --count=2 -y || true
        package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y || true
      fi
      systemd-tmpfiles --clean || true
      journalctl --vacuum-time=2weeks || true
      sync
      echo 3 | tee /proc/sys/vm/drop_caches >/dev/null || true
      
    • 赋权与定时:
      • 赋权:chmod +x /usr/local/bin/cleanup.sh
      • 每天 02:00 执行:echo “0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1” | tee -a /var/spool/cron/root
  • 确保 crond 运行:systemctl enable --now crond
  • 可选:安装 ncdu 做定期巡检(yum install -y ncdu),直观查看目录占用变化。

五 常见陷阱与建议

  • 不要直接 rm -rf /var/log/*,优先用 logrotatejournalctl 管理日志,避免破坏正在写入的日志与轮转链路。
  • 清理 /tmp/var/tmp 前确认无服务/进程占用;生产环境建议用 systemd-tmpfiles 按计划清理,而非粗暴全删。
  • 删除旧内核务必保留至少 1–2 个可启动内核,避免更新失败导致无法启动;删除前用 rpm -q kernel 核对版本。
  • 谨慎使用 echo 3 > /proc/sys/vm/drop_caches,它仅释放内存页缓存,对磁盘空间无影响,且频繁清理可能降低文件系统性能。

0