在 CentOS(以及 RHEL 系列)系统上做 系统清理(cleanup) 通常分为:包管理清理、日志清理、临时文件清理、内核清理、磁盘与快照管理、服务与开机项优化 等几个方面。下面给你一套最佳实践清单,兼顾安全与可维护性。
yum clean all
# 或 CentOS 8+
dnf clean all
yum autoremove
# 或
dnf autoremove
✅ 会删除“不再被任何软件依赖”的包
rpm -q kernel
保留 当前运行内核 + 1 个备用内核 即可:
package-cleanup --oldkernels --count=2
⚠️ 不要删除正在使用的内核:
uname -r
查看占用:
journalctl --disk-usage
限制大小(推荐):
journalctl --vacuum-size=200M
# 或按时间
journalctl --vacuum-time=7d
永久配置:
/etc/systemd/journald.conf
SystemMaxUse=200M
清理旧日志:
rm -f /var/log/*.old
rm -f /var/log/*-202*
使用 logrotate(推荐):
logrotate -d /etc/logrotate.conf # 测试
logrotate -f /etc/logrotate.conf # 强制执行
rm -rf /tmp/*
rm -rf /var/tmp/*
CentOS 7+ 可启用自动清理:
systemctl status systemd-tmpfiles-clean
rm -rf ~/.cache/*
du -sh /*
du -sh /var/*
找最大目录:
ncdu /
rm -f /var/crash/*
rm -f /core.*
systemctl list-unit-files --type=service | grep enabled
关闭不必要的服务(示例):
systemctl disable postfix
systemctl stop postfix
docker system prune -a
docker volume prune
⚠️ 会删除未使用的镜像、容器、网络
✅ 不要直接 rm -rf /
✅ 清理前先 df -h / du 分析
✅ 重要服务器先快照 / 备份
✅ 内核、/boot 不要清空
✅ 使用 logrotate,而非手动删日志
#!/bin/bash
yum clean all
dnf autoremove -y
journalctl --vacuum-size=200M
rm -rf /tmp/*
rm -rf /var/tmp/*
logrotate -f /etc/logrotate.conf
如果你愿意,可以告诉我:
我可以给你更针对性的清理方案。