温馨提示×

怎样脚本化centos cleanup

小樊
38
2026-10-17 17:29:37
栏目: 智能运维

在 CentOS 上做“脚本化 cleanup”通常分为几类:系统更新与旧包清理、日志清理、临时文件清理、磁盘占用分析、可选的服务/用户清理。下面给你一个可直接用的 Bash 脚本模板,并解释每部分在做什么、注意事项。


一、基础 cleanup 脚本(推荐日常使用)

保存为 centos_cleanup.sh:

#!/bin/bash
# centos_cleanup.sh
# 适用于 CentOS 7 / 8 / Stream

set -e

echo "==> 清理 yum/dnf 缓存"
if command -v dnf >/dev/null 2>&1; then
    dnf clean all
else
    yum clean all
fi

echo "==> 删除旧内核(保留最新 2 个)"
if command -v dnf >/dev/null 2>&1; then
    dnf remove -y $(dnf repoquery --installonly --latest-limit=-2 -q)
else
    package-cleanup --oldkernels --count=2 -y
fi

echo "==> 清理日志"
journalctl --vacuum-time=7d
find /var/log -type f -name "*.log" -mtime +7 -delete
find /var/log -type f -name "*.gz" -delete

echo "==> 清理临时文件"
rm -rf /tmp/*
rm -rf /var/tmp/*

echo "==> 清理 Docker(如已安装)"
if command -v docker >/dev/null 2>&1; then
    docker system prune -af
fi

echo "==> 磁盘使用情况"
df -h

echo "==> Cleanup 完成"

赋予执行权限:

chmod +x centos_cleanup.sh
sudo ./centos_cleanup.sh

二、常用清理点说明

1. 包管理器缓存

  • CentOS 7:yum clean all
  • CentOS 8 / Stream:dnf clean all

2. 旧内核(很重要)

旧内核会占 /boot,容易导致更新失败。

3. journal 日志

journalctl --vacuum-size=500M
journalctl --vacuum-time=7d

4. 大文件定位(手动前先用)

du -x -h / | sort -rh | head -20

三、进阶:定时任务(cron)

每周日凌晨跑一次:

sudo crontab -e
0 3 * * 0 /root/centos_cleanup.sh >> /var/log/cleanup.log 2>&1

四、生产环境注意事项

✅ 建议:

  • 先在非生产环境测试
  • 日志保留策略按合规要求调整
  • Docker prune 会删未使用镜像,谨慎

❌ 不建议自动删除:

  • /var/lib/mysql
  • 用户 home 目录
  • 正在写入的日志

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否是服务器 / 容器 / 云主机
  • 想清理到什么程度(轻量 / 深度)

我可以帮你定制一个更安全的 cleanup 脚本。

0 踩