温馨提示×

Linux垃圾文件怎么彻底清除

小樊
39
2025-12-07 06:30:04
栏目: 智能运维

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 allsudo yum autoremove
    • Fedora:sudo dnf clean allsudo 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**;传统方式可用tmpwatchcron定期删除旧临时文件。
  • 日志文件
    • systemd 日志:保留最近7天或限制总大小500MB,执行sudo journalctl --vacuum-time=7dsudo 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(仅在确认无性能敏感任务时执行)。

三、一键脚本示例(按需取用)

  • Debian/Ubuntu 常规清理
#!/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"
  • RHEL/CentOS/Fedora 常规清理
#!/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-tmpfileslogrotate等机制做定期自动维护**,减少手工强删的风险。
  • 清理浏览器/用户缓存时,优先在应用内或使用BleachBit等成熟工具,避免误删用户数据。

0