在 CentOS(以及 RHEL 系列)上进行系统清理(cleanup)时,目标是释放磁盘空间、移除无用组件、保持系统整洁且不影响业务稳定性。下面按「安全 → 常用 → 进阶」给出最佳实践。
# CentOS 7
yum clean all
# CentOS 8 / Stream
dnf clean all
可选:
rm -rf /var/cache/yum
CentOS 会自动保留多个内核,容易占满 /boot
# 查看当前使用内核
uname -r
# 查看已安装内核
rpm -qa | grep kernel
# 删除旧内核(保留当前和至少一个)
yum remove kernel-3.10.0-xxx
或使用工具(CentOS 7):
package-cleanup --oldkernels --count=2
# CentOS 7
yum autoremove
# CentOS 8+
dnf autoremove
journalctl --disk-usage
journalctl --vacuum-size=100M
# 或
journalctl --vacuum-time=7d
rm -rf /tmp/*
rm -rf /var/tmp/*
建议配置自动清理:
systemctl enable --now systemd-tmpfiles-clean.timer
# 手动清空大日志
truncate -s 0 /var/log/messages
truncate -s 0 /var/log/secure
# 或使用 logrotate(推荐)
logrotate -f /etc/logrotate.conf
yum list installed
移除示例:
yum remove httpd mariadb*
systemctl list-unit-files | grep enabled
systemctl disable --now telnet.socket
df -h
du -sh /* 2>/dev/null
du -sh /var/* 2>/dev/null
交互式工具:
yum install ncdu
ncdu /
docker system prune -a
docker volume prune
❌ 不要删除:
/usr, /lib, /etc 中不熟悉的文件glibc, systemd, yum/dnf❌ 不要直接 rm -rf /var/log
#!/bin/bash
yum clean all
yum autoremove -y
journalctl --vacuum-time=7d
rm -rf /tmp/*
package-cleanup --oldkernels --count=2
加入 cron:
0 3 * * 0 /root/cleanup.sh
✅ 清理 yum/dnf 缓存
✅ 保留 1–2 个旧内核
✅ 删除无用依赖
✅ 控制日志大小
✅ 定期分析磁盘
✅ 不删系统关键组件
如果你能告诉我 CentOS 版本(7 / 8 / Stream)和使用场景(服务器 / 容器 / 桌面),我可以给你更精确的清理方案。