Linux系统垃圾指散落各处的缓存、日志、旧内核及包管理残留;误删/var/lib/dpkg或/usr/src旧内核头文件可能导致apt升级失败,清空/var/log/journal前未停systemd-journald会致日志服务卡住。

哪些文件算“系统垃圾”?别乱删
Linux 里没有 Windows 那种明确的“回收站”或“临时文件夹”,所谓“垃圾”其实是散落在各处的缓存、日志、旧内核、包管理残留。误删 /var/lib/dpkg 或 /usr/src 下的旧内核头文件,可能让下次 apt upgrade 失败;清空 /var/log/journal 前没停 systemd-journald,会导致日志服务卡住。
-
/var/cache/apt/archives/:已安装 deb 包的缓存,可安全清理 -
/var/log/journal/:二进制系统日志,占空间大但默认不自动轮转 -
/usr/src/和/lib/modules/中的旧内核目录:升级后残留,不卸载会累积 -
~/.cache/下的用户级缓存(如pip、npm、flatpak):不影响系统,但能腾出几 GB
用 apt autoremove + autoclean 清理 Debian/Ubuntu 系统
这是最安全、最贴近包管理逻辑的清理方式。它只动 apt 自己维护的文件,不会碰手动编译或第三方源装的东西。
-
sudo apt autoremove --purge:卸载不再被依赖的包(比如旧内核),--purge同时删配置文件 -
sudo apt autoclean:只删那些已无法下载的旧版本 deb 缓存(比clean更保守) -
sudo apt clean:清空整个/var/cache/apt/archives/,更彻底,但重装包时得重新下载
注意:autoremove 默认不删旧内核——除非你先用 apt list --installed | grep linux-image 确认哪些是冗余的,再手动 sudo apt remove linux-image-5.15.0-91-generic。
journalctl 控制日志大小,别直接 rm -rf /var/log/journal
直接删 /var/log/journal/ 下的文件极大概率导致 systemd-journald 拒绝写入新日志,甚至影响 journalctl 查询。正确做法是用 journalctl 内置机制做配额和轮转。
- 查当前占用:
journalctl --disk-usage - 限制最大体积(重启 journald 生效):
sudo mkdir -p /etc/systemd/journald.conf.d/,然后写/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。
find + xargs 清理用户缓存要加 -maxdepth 和 -type f
find ~/.cache -mtime +30 -delete 看似简单,实际容易误伤——有些应用(如 gnome-shell)把运行时 socket 放在 ~/.cache/ 下,删了就黑屏;find 默认递归太深,可能扫到挂载点或符号链接环。
- 限定层级、只删普通文件:
find ~/.cache -maxdepth 2 -type f -mtime +30 -delete - 排除关键子目录:
find ~/.cache -maxdepth 2 -type f -mtime +30 ! -path "*/pip/*" ! -path "*/npm/*" -delete - 先预览再删:
find ~/.cache -maxdepth 2 -type f -mtime +30 -ls | head -20
真正麻烦的是 Flatpak 应用缓存——它存在 ~/.local/share/flatpak/runtime/,不能用 find 盲删,得用 flatpak uninstall --unused。
清理不是越狠越好。旧内核留一个、journal 日志留一周、~/.cache 里 pip/npm 的 wheel 缓存留着能加速重装——这些“不干净”的地方,恰恰是系统稳定和恢复能力的缓冲带。

















