温馨提示×

能否脚本化centos cleanup

小樊
34
2026-10-14 20:56:24
栏目: 智能运维

可以的,CentOS 的清理工作完全可以脚本化。下面我给你一个实用、安全、可自定义的 CentOS 清理脚本示例,适用于 CentOS 7 / 8 / Stream。


一、常见可清理内容

  • 系统更新缓存(yum/dnf)
  • 旧内核
  • 日志文件
  • 临时文件
  • 未使用的依赖包
  • Docker(如已安装)

二、示例:CentOS Cleanup 脚本

centos_cleanup.sh

#!/bin/bash

# 仅 root 可运行
if [ "$(id -u)" -ne 0 ]; then
  echo "请使用 root 用户执行该脚本"
  exit 1
fi

echo "===== 开始 CentOS 系统清理 ====="

# 1. 清理 yum / dnf 缓存
echo ">> 清理软件包缓存"
yum clean all 2>/dev/null || dnf clean all 2>/dev/null

# 2. 删除旧内核(保留最新 2 个)
echo ">> 清理旧内核"
package-cleanup --oldkernels --count=2 -y

# 3. 删除无用依赖
echo ">> 删除无用依赖"
yum autoremove -y 2>/dev/null || dnf autoremove -y 2>/dev/null

# 4. 清理日志
echo ">> 清理 systemd 日志"
journalctl --vacuum-time=7d

echo ">> 清理 /var/log 大日志"
find /var/log -type f -name "*.log" -size +50M -exec truncate -s 0 {} \;

# 5. 清理临时文件
echo ">> 清理 /tmp 和 /var/tmp"
find /tmp -type f -atime +7 -delete
find /var/tmp -type f -atime +7 -delete

# 6. Docker 清理(可选)
if command -v docker >/dev/null 2>&1; then
  echo ">> 清理 Docker 资源"
  docker system prune -af
fi

echo "===== 清理完成 ====="

三、使用方法

chmod +x centos_cleanup.sh
./centos_cleanup.sh

四、可定时执行(推荐)

crontab -e

每月执行一次:

0 3 1 * * /root/centos_cleanup.sh >> /var/log/cleanup.log 2>&1

五、注意事项

⚠️ 删除内核前请确认当前内核:

uname -r

⚠️ 生产环境建议先测试或注释部分清理项


如果你愿意,我可以帮你:

  • 针对 CentOS 7 / 8 / Stream 分别优化
  • 加上 磁盘空间检查
  • 做成 Ansible Playbook
  • 或只清理 某一类(日志 / 内核 / Docker)

你更偏向哪种场景?

0 踩