可以的,CentOS 的清理工作完全可以脚本化。下面我给你一个实用、安全、可自定义的 CentOS 清理脚本示例,适用于 CentOS 7 / 8 / Stream。
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
⚠️ 生产环境建议先测试或注释部分清理项
如果你愿意,我可以帮你:
你更偏向哪种场景?