温馨提示×

centos清理的自动化工具介绍

小樊
39
2025-12-13 16:15:08
栏目: 智能运维

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 定时任务
    • 适合绝大多数周期性清理(如每日/每周清理缓存、日志轮转、临时文件)。
    • 示例:每天 02:00 清理 YUM 缓存并将 journal 保留最近 7 天
      0 2 * * * root /usr/bin/yum clean all
      0 2 * * * root /usr/bin/journalctl --vacuum-time=7d
      
  • 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 定期巡检大文件/大目录,结合脚本做“精准清理”而非全量删除。

0