CentOS清理的自动化工具与方案
一 工具分类与定位
- 包管理与系统缓存
- YUM/DNF 缓存清理:清理 /var/cache/yum 或 /var/cache/dnf 的下载包与元数据,快速释放空间。
- 旧内核清理:通过 package-cleanup 保留最近 N 个内核,避免 /boot 分区被占满。
- 日志与临时文件
- logrotate:按时间/大小轮转并压缩日志,支持过期清理,适合长期自动化。
- systemd-journald 日志:用 journalctl 按时间或容量限制日志保留,避免 journal 无限增长。
- 临时目录清理:定期清理 /tmp 与 /var/tmp,减少临时文件堆积。
- 图形化与隐私清理
- BleachBit:跨平台图形/命令行清理工具,支持浏览器缓存、系统临时文件、日志及隐私擦除(如粉碎文件、空闲空间覆写)。
- 磁盘分析与回收站
- ncdu:交互式分析磁盘占用,快速定位“大文件/大目录”,便于按需清理。
- trash-cli:提供“回收站”语义(删除到回收站、定时清空),降低误删风险。
二 常用自动化方式
- cron 定时任务
- systemd 定时器
- 以服务单元 + 定时器单元实现更“现代化”的调度,便于依赖管理与日志归集。
- anacron
- 适合非 7×24 小时运行的机器(如笔记本/开发机),按“间隔天数”执行,弥补停机期间的任务漏执行。
- 组合方案
- 日常以 logrotate + cron 为主;需要回收站与交互式定位时配合 trash-cli + ncdu;图形环境或隐私清理补充 BleachBit。
三 一键自动化脚本示例
- 目标:清理 YUM/DNF 缓存、截断超期日志、清理临时文件、保留最近 2 个内核、回收站定时清空、journal 保留 7 天。
- 保存为 /usr/local/sbin/cleanup.sh,赋权 chmod 700,加入 root 的 crontab(如 0 2 * * *)。
#!/usr/bin/env bash
set -Eeuo pipefail
# 仅在 CentOS 7/8 常见路径下执行清理
YUM=$(command -v yum 2>/dev/null)
DNF=$(command -v dnf 2>/dev/null)
# 1) 清理包管理器缓存
if [[ -n "$YUM" ]]; then
yum clean all
elif [[ -n "$DNF" ]]; then
dnf clean all
fi
# 2) 清理 systemd journal(保留最近7天)
journalctl --vacuum-time=7d || true
# 3) 截断 /var/log 下超过7天的 .log 文件(更安全,避免直接删除正在写入的日志)
find /var/log -type f -name "*.log" -mtime +7 -print0 | xargs -0 -r truncate -s 0
# 4) 清理临时目录(谨慎:确保无业务依赖)
rm -rf /tmp/*
rm -rf /var/tmp/*
# 5) 删除旧内核,仅保留最近2个(需 root;适配 yum/dnf)
if [[ -n "$YUM" ]]; then
package-cleanup --oldkernels --count=2 || true
elif [[ -n "$DNF" ]]; then
dnf remove -y "$(dnf repoquery --installonly --latest-limit=-2 -q)" || true
fi
# 6) 可选:清空回收站(若已安装 trash-cli)
if command -v trash-empty >/dev/null 2>&1; then
trash-empty 7 || true
fi
exit 0
- 说明
- 使用 truncate 而非 rm 可减少正在被进程写入的日志文件带来的风险。
- 旧内核删除依赖 package-cleanup(yum-utils/dnf-utils),请先安装对应工具包。
- 生产环境建议先在测试环境验证,并配合日志审计(如脚本输出重定向到 /var/log/cleanup.log)。
四 安全与最佳实践
- 先备份关键数据与配置,清理前确认无业务写入窗口或已做好服务切换。
- 优先使用“轮转/截断/过期保留”而非粗暴删除;对正在写入的日志优先 truncate。
- 谨慎清理 /tmp 与 /var/tmp,避免删除被系统或业务占用的临时文件(如会话锁、套接字)。
- 旧内核删除务必保留至少 1–2 个可回退版本,避免升级失败无法启动。
- 使用 trash-cli 替代 rm,配合定时清空回收站,降低误删风险。
- 用 ncdu 定期巡检大文件/大目录,结合脚本做“精准清理”而非全量删除。