Linux垃圾文件彻底清除实操指南
一、先定位占用再清理
- 查看整体磁盘使用:执行df -h,快速发现吃空间的挂载点(如**/、/var**)。
- 分析目录占用:对可疑目录执行du -sh /path逐级下钻;全局扫描可用ncdu /(交互式,便于定位大文件/目录)。
- 检查日志占用:用journalctl --disk-usage查看 systemd 日志体积,决定是否需要裁剪。
二、按类别执行清理
- 包管理器缓存
- Debian/Ubuntu:查看缓存大小sudo du -sh /var/cache/apt/archives;清理旧包sudo apt clean;仅删过期包sudo apt autoclean;移除无用依赖sudo apt autoremove(加**–purge**连同配置文件)。
- RHEL/CentOS:sudo yum clean all;sudo yum autoremove。
- Fedora:sudo dnf clean all;sudo dnf autoremove。
- Arch:sudo pacman -Scc(交互确认)或按依赖清理sudo pacman -Rns $(pacman -Qdtq)。
- Snap/Flatpak:sudo snap refresh --list(查看);flatpak uninstall --unused(清理未使用运行时/应用)。
- 临时文件
- 立即清理:sudo rm -rf /tmp/ /var/tmp/*(谨慎,确保无程序占用)*。
- 自动/定期清理:使用systemd-tmpfiles --clean按系统策略清理;或配置**/etc/tmpfiles.d/*.conf后执行systemctl restart systemd-tmpfiles-setup.service**;传统方式可用tmpwatch或cron定期删除旧临时文件。
- 日志文件
- systemd 日志:保留最近7天或限制总大小500MB,执行sudo journalctl --vacuum-time=7d或sudo journalctl --vacuum-size=500M;若报错,先归档再清理:sudo journalctl --rotate后重试。
- 轮转与压缩:对旧日志可先gzip归档,再删除超期文件,例如find /var/log -name “*.log” -mtime +30 -delete。
- 旧内核(仅限 Debian/Ubuntu 等使用 APT 的发行版)
- 查看当前内核:uname -r;列出已装内核:dpkg --list | grep linux-image;卸载旧版(示例):sudo apt remove --purge linux-image-5.15.0-30-generic;同步引导:sudo update-grub。
- 容器/镜像/构建缓存
- Docker:docker system prune -a(谨慎,会删除停止的容器、悬挂镜像和无用网络/构建缓存)。
- 可选:释放页面缓存(不影响数据,仅影响性能观测)
- 执行:sync && echo 3 > /proc/sys/vm/drop_caches(仅在确认无性能敏感任务时执行)。
三、一键脚本示例(按需取用)
#!/usr/bin/env bash
set -e
echo "==> 清理 APT 缓存"
sudo apt clean
sudo apt autoclean
echo "==> 移除无用依赖"
sudo apt autoremove --purge -y
echo "==> 清理旧日志(保留7天)"
sudo journalctl --vacuum-time=7d
echo "==> 清理临时文件"
sudo systemd-tmpfiles --clean
echo "==> 如有多余内核,请先 uname -r 确认当前版本,再手动 apt remove --purge 旧版并更新 grub"
#!/usr/bin/env bash
set -e
echo "==> 清理 YUM/DNF 缓存"
sudo yum clean all || true
sudo dnf clean all || true
echo "==> 移除无用依赖"
sudo yum autoremove -y || sudo dnf autoremove -y
echo "==> 清理旧日志(保留7天)"
sudo journalctl --vacuum-time=7d
echo "==> 清理临时文件"
sudo systemd-tmpfiles --clean
提示:将脚本保存为cleanup.sh,执行chmod +x cleanup.sh && sudo ./cleanup.sh。涉及删除的命令请先在测试环境验证。
四、安全与自动化建议
- 重要数据务必先备份;删除前用du/ncdu确认目标与大小,避免误删。
- 生产环境优先使用“预览/干跑”模式(如apt autoremove --dry-run),确认无误再执行。
- 对**/tmp、/var/tmp、/var/log等目录的清理,优先采用systemd-tmpfiles或logrotate等机制做定期自动维护**,减少手工强删的风险。
- 清理浏览器/用户缓存时,优先在应用内或使用BleachBit等成熟工具,避免误删用户数据。