温馨提示×

Linux高手进阶:深度清理技巧大公开

小樊
35
2026-01-03 18:33:06
栏目: 智能运维

Linux高手进阶深度清理技巧

一 快速定位空间占用

  • 全局概览:用 df -h 找出已满的挂载点(常见是 //var)。
  • 逐层下钻:用 du -h --max-depth=1 /path | sort -rh 定位一级子目录大小;远程或交互更顺手可用 ncdu 扫描目录占用。
  • 发现“假满”:若 df 显示满而 du 找不到,多半是被删除但仍被进程占用的文件,执行 lsof | grep deleted 定位句柄并重启相关进程释放空间。
  • 典型重灾区:/var/log/var/cache/tmp/home、以及容器/镜像目录。

二 安全清理核心区域

  • 包管理器缓存
    • Debian/Ubuntu:sudo apt clean(清全部 .deb)、sudo apt autoclean(清过期包)、sudo apt autoremove --purge(删孤儿包及配置)。
    • RHEL/CentOS/Fedora:sudo yum clean allsudo dnf clean all;按需 yum/dnf autoremove
  • systemd 日志
    • 查看占用:sudo journalctl --disk-usage
    • 限制大小/时间:sudo journalctl --vacuum-size=1Gsudo journalctl --vacuum-time=7d
  • 临时文件
    • 快速清理:sudo rm -rf /tmp/ /var/tmp/*(生产环境建议先停占用或按时间清理)。
    • 按时间清理:sudo find /tmp -type f -mtime +7 -delete
    • 自动化:systemd-tmpfiles 每天清理 /tmp 中超过 7 天 的文件(配置 /etc/tmpfiles.d/cleanup.conf 并重启服务)。
  • 旧内核(先保留当前:uname -r
    • Debian/Ubuntu:列内核 dpkg -l | grep linux-image;删旧版 sudo apt remove --purge linux-image-<旧版本>;更新引导 sudo update-grub
    • RHEL/CentOS/Fedora:rpm -qa | grep kernel;删旧版 sudo dnf remove kernel-<旧版本>
  • Docker 资源
    • 谨慎全清:docker system prune -a(会删停止容器、悬挂镜像、无用网络与构建缓存)。
    • 精细清理:docker builder prunedocker volume prunedocker network prune
  • 用户级缓存与回收站
    • 清理:rm -rf ~/.cache/ ~/.local/share/Trash/ ~/.thumbnails/*;浏览器缓存如 ~/.cache/google-chrome/Default/Cache~/.cache/mozilla/firefox/**。
  • 可选 内核页缓存释放(仅临时、不影响数据):sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

三 进阶定位与专项清理

  • 大文件与重复文件
    • 查找大文件:find / -type f -size +100M -exec ls -lh {} ; 2>/dev/null
    • 可视化分析:ncdu /var(或目标目录)。
    • 重复文件:fdupes -r /path
  • Snap 包残留(Ubuntu 常见)
    • 删旧修订:sudo snap list --all | awk ‘/disabled/{print $1, $3}’ | xargs -rn2 sudo snap remove;清缓存 **sudo rm -rf /var/lib/snapd/cache/*。
  • 文件系统保留空间
    • 视文件系统调整保留块(如 ext4 的 reserved blocks),为 root 预留应急空间,避免系统盘被写满导致异常。

四 自动化与风险控制

  • 日志轮转与策略
    • 强制轮转:sudo logrotate -f /etc/logrotate.conf;为高频日志设置合理的 sizerotate 策略,避免无限增长。
  • 定时清理(cron 示例)
    • 系统级(Debian/Ubuntu):
      • 编辑:sudo crontab -e
      • 每天 3 点清理:
        • 0 3 * * * /usr/bin/apt clean && /usr/bin/apt autoclean && /usr/bin/apt autoremove -y && /usr/bin/journalctl --vacuum-time=7d
    • 其他发行版将 apt 替换为 yum/dnf 对应命令。
  • 变更前预览与备份
    • APT 预览:sudo apt autoremove --dry-run;重要数据先备份(如 /home、数据库)。
  • 安全要点
    • 清理日志优先用 journalctl --vacuum-* 或 logrotate,避免直接删除正在写入的 /var/log 文件。
    • 慎用 rm -rf,尽量限定路径与条件;清理 /tmp 时避开正在使用的会话与文件。

0