Linux系统垃圾如何清理
小樊
41
2025-12-11 05:58:14
Linux 系统垃圾清理实操指南
一 快速定位占用
- 查看整体磁盘使用:执行 df -h,确认哪个分区已满(如 /、/var)。
- 定位大目录与大文件:执行 du -sh / | sort -rh | head -10* 查看根目录下占用前 10 的目录;进入可疑目录继续逐级排查。
- 分析磁盘使用:安装并使用 ncdu /,交互式定位占用最大的路径,便于精准清理。
二 安全清理步骤
- 包管理器缓存
- Debian/Ubuntu:sudo apt-get clean(清理已下载包)、sudo apt-get autoclean(清理过期索引)、sudo apt-get autoremove --purge(移除无用依赖与配置)。
- RHEL/CentOS:sudo yum clean all;sudo yum autoremove。
- Fedora:sudo dnf clean all;sudo dnf autoremove。
- Arch:sudo pacman -Sc(清理未使用缓存)、sudo pacman -Scc(清理全部缓存,谨慎)。
- 临时文件
- 系统临时目录:sudo rm -rf /tmp/;sudo rm -rf /var/tmp/(仅在确认无程序占用时执行)。
- 自动/定时清理:使用 systemd-tmpfiles --clean 按策略清理;或配置 /etc/tmpfiles.d/*.conf 并用 tmpwatch/tmpreaper 定期清理。
- 日志文件
- 查看日志占用:journalctl --disk-usage。
- 按时间保留:sudo journalctl --vacuum-time=7d(保留最近 7 天)。
- 按大小限制:sudo journalctl --vacuum-size=500M。
- 轮转后再清理:sudo journalctl --rotate && sudo journalctl --vacuum-time=1d。
- 内存缓存(仅在特殊场景手动释放)
- 同步数据:sync。
- 释放缓存:sudo sysctl -w vm.drop_caches=3(1=页缓存,2=目录项与 inode,3=全部;通常无需手动)。
- 旧内核(Debian/Ubuntu)
- 查看:dpkg --list | grep linux-image。
- 删除旧版本:sudo apt-get purge linux-image-<旧版本号>;或安装 package-cleanup 后执行 package-cleanup --oldkernels。
- 容器与镜像(如部署 Docker)
- 谨慎清理:docker system prune -a(删除未使用镜像/容器/网络/卷,可能中断业务)。
- 用户与应用缓存
- 用户缓存:rm -rf ~/.cache/*(或按需清理某应用子目录)。
- 浏览器缓存:如 ~/.config/google-chrome/Default/Cache、~/.mozilla/firefox/*/cache2/。
三 按发行版差异要点
- Debian/Ubuntu:优先使用 apt 系列命令(clean/autoclean/autoremove/purge),旧内核用 apt purge 或 package-cleanup。
- RHEL/CentOS:使用 yum clean all、yum autoremove。
- Fedora:使用 dnf clean all、dnf autoremove。
- Arch:使用 pacman -Sc/-Scc 清理缓存,结合 -Rns 移除无用包及配置。
四 自动化与工具
- 日志轮转:检查并优化 /etc/logrotate.conf 与 /etc/logrotate.d/,实现按大小/时间自动轮转与压缩。
- 定时清理:用 cron 定期执行清理脚本(如清理 /tmp 中超过 7 天未访问的文件)。
- 图形化工具:安装 BleachBit 清理系统与用户缓存、临时文件;使用 ncdu/Baobab 分析磁盘占用。
五 注意事项与回退建议
- 备份重要数据,执行 rm -rf 前务必确认路径与作用范围。
- 生产环境谨慎手动释放 vm.drop_caches,一般无需干预,系统会自动回收。
- 清理 /var/log/ 时优先用 journalctl 的按时间/大小策略,避免粗暴删除正在写入的日志文件。
- 删除旧内核前确保至少保留 1 个可启动内核,避免无法启动。
- 容器清理前先确认业务依赖,避免误删正在使用的镜像/卷。
- 操作完成后再次执行 df -h 与 ncdu 复核空间释放效果。