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 all、sudo dnf clean all;按需 yum/dnf autoremove。
- systemd 日志
- 查看占用:sudo journalctl --disk-usage。
- 限制大小/时间:sudo journalctl --vacuum-size=1G、sudo 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 prune、docker volume prune、docker 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;为高频日志设置合理的 size 与 rotate 策略,避免无限增长。
- 定时清理(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 时避开正在使用的会话与文件。