安全清理APT缓存和孤立包应依次执行sudo apt autoclean(删无法下载的旧包)、sudo apt autoremove --purge(卸载冗余依赖及配置)、sudo apt clean(彻底清空缓存),并须先用uname -r和dpkg --get-selections确认当前内核再删旧内核。

别急着 rm -rf,Linux 里没有“一键清垃圾”的安全捷径——所谓“垃圾”其实是分散的缓存、日志、旧内核和用户残留,乱删 /var/lib/dpkg 或 /usr/src 可能直接让 apt upgrade 失败,甚至无法启动。
怎么安全清理 apt 缓存和孤立包
APT 缓存堆积在 /var/cache/apt/archives/,不清理会占几 GB;但盲目 apt clean 会删掉当前可用的 deb 包,重装软件得重新下载。
-
sudo apt autoclean:只删那些源里已下架、无法再下载的旧版 deb,保留当前系统正在用的版本,最稳妥 -
sudo apt clean:清空整个/var/cache/apt/archives/,适合磁盘告急且网络稳定时用 -
sudo apt autoremove --purge:卸载不再被依赖的包(比如旧内核),--purge同时删配置文件,但默认不碰当前运行内核 - 先确认当前内核:
uname -r,再查已装内核:dpkg --get-selections | grep 'linux-image',只删版本号明显旧于当前的条目
为什么不能直接 rm -rf /var/log/journal
直接删 /var/log/journal/ 下的文件,90% 概率导致 systemd-journald 卡死,journalctl 查不到新日志,甚至影响服务启停。
- 查当前占用:
journalctl --disk-usage - 限制最大体积(重启生效):写
/etc/systemd/journald.conf.d/limit.conf,内容为SystemMaxUse=500M - 立即删旧日志(留最近 3 天):
sudo journalctl --vacuum-time=3d - 如果
journalctl已卡住:先sudo systemctl stop systemd-journald,再删文件,最后sudo systemctl start systemd-journald
清理用户级缓存(~/.cache)要防误伤
~/.cache 下有 pip、npm、flatpak、thumbnail 等缓存,加了 -mtime +30 也不保险——有些桌面组件(如 gnome-shell)会把运行时数据存在这里,find ~/.cache -delete 可能导致下次登录异常。
- 针对性清理更安全:
rm -rf ~/.cache/thumbnails/*(缩略图)、rm -rf ~/.cache/pip/Cache - 用
du -sh ~/.cache/* | sort -hr | head -10先看哪几个子目录最大,再决定是否清 - 避免无脑
find ~/.cache -type f -mtime +30 -delete:没加-maxdepth 2可能钻进应用私有结构里
别碰 /proc/sys/vm/drop_caches 除非真需要
free -m 显示 available 还有几百 MB,就别清缓存——buff/cache 是可回收内存,不是泄漏,清了反而让后续读文件变慢。
- 必须先
sync,再sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches',否则脏页没落盘,可能丢数据 - 参数别记混:
echo 1只清 page cache,echo 2清 dentries/inodes,echo 3全清 - 生产环境慎用:频繁执行会让 IO 压力反升,尤其在数据库或文件服务器上
- swap 不是垃圾:
swapoff -a强行换回内存,若available不足,OOM killer 会立刻杀进程
真正难处理的从来不是命令本身,而是判断哪些能删、哪些动了就出事——比如 /boot 满了,你得先确认当前内核,再删旧 linux-image 和配套 linux-headers,漏删一个头文件,下次编译模块就失败;又比如 dpkg -l | grep '^rc' 列出的包,有些配置文件其实被其他服务共用,dpkg -P 一删,另一个软件就起不来。


















