avatar

蜗牛札记

记录技术、生活与一点点折腾

  • 首页
  • PetBoxX
  • 工具软件
  • NAS 折腾
  • Linux 运维
  • VPS & 网络
  • 关于
主页 清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法
文章

清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法

发表于 最近 更新于 最近
作者 Snailszzy
32~42 分钟 阅读

在长期使用 Ubuntu 服务器的过程中,系统日志、apt 缓存、旧内核、用户目录缓存等都会逐渐占用大量磁盘空间。尤其是云服务器系统盘较小的情况下,很容易出现根分区 / 空间不足的问题。

本文整理一套常用、安全的 Ubuntu 系统清理方法,适合用于服务器日常维护。


1. 先查看根目录占用情况

在清理之前,建议先确认到底是哪个目录占用了空间。

sudo du -xh / --max-depth=1 2>/dev/null | sort -h

示例输出:

510M    /var
786M    /opt
6.7G    /usr
12G     /

这个命令用于查看根目录 / 下各一级目录的磁盘占用情况。

参数说明:

sudo             使用管理员权限查看,否则部分目录可能没有权限
du               disk usage,用于查看磁盘占用
-x               只统计当前文件系统,不跨到其他挂载盘
-h               human readable,以 K/M/G 等易读单位显示
/                从根目录开始统计
--max-depth=1    只查看一级目录,不继续展开子目录
2>/dev/null      忽略权限不足等错误提示
sort -h          按容量大小排序

这个命令适合用来判断是 /var、/usr、/home、/tmp 还是其他目录占用了空间。


2. 查看用户目录占用情况

如果发现 /home 占用较大,可以继续查看具体用户目录。

例如查看 /home/opc:

du -xh /home/opc --max-depth=1 2>/dev/null | sort -h

这个命令用于查看 /home/opc 用户目录下各一级目录的占用情况。

重点关注这些目录:

~/.local      用户级程序、容器数据、pipx、Podman rootless 数据等
~/.cache      用户缓存
~/.ollama     Ollama 模型文件
~/Downloads   下载目录

如果使用过 Podman、Open WebUI、Ollama、Whisper、Python 环境等,用户目录下可能会有较大的隐藏目录。


3. 清理 systemd 日志

systemd 的日志通常保存在:

/var/log/journal

如果服务器运行时间较长,日志可能占用几个 GB。例如:

/var/log/journal 占用 3.8G

可以用下面命令查看日志占用:

sudo journalctl --disk-usage

推荐将日志限制到 200MB:

sudo journalctl --vacuum-size=200M

执行后,systemd 会自动删除旧日志,只保留最近的部分日志。

如果想长期限制日志大小,可以编辑配置文件:

sudo nano /etc/systemd/journald.conf

加入或修改:

SystemMaxUse=200M

然后重启日志服务:

sudo systemctl restart systemd-journald

4. 清理 apt 缓存和软件包列表

Ubuntu 使用 apt 安装软件时,会缓存下载过的软件包和软件源列表。时间久了可能占用几百 MB 甚至更多空间。

例如:

apt 缓存和列表大约占用 435M

可以执行:

sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

说明:

sudo apt clean
清理 apt 下载的软件包缓存。

sudo rm -rf /var/lib/apt/lists/*
删除本地软件源列表缓存。

sudo apt update
重新拉取最新的软件源列表。

这个操作通常比较安全,但执行 rm -rf /var/lib/apt/lists/* 后,一定要重新执行 sudo apt update,否则后续安装软件可能会提示找不到软件包信息。


5. 清理旧内核

Ubuntu 更新内核后,旧内核通常不会自动完全删除。旧内核会占用 /boot 和 /usr 空间。

先查看当前正在运行的内核:

uname -r

例如当前运行:

6.8.0-1057-oracle

再查看已安装的内核包:

dpkg -l | grep -E 'linux-image|linux-headers|linux-modules'

如果确认当前运行的是 6.8.0-1057-oracle,可以保留一个较新的旧版本作为回退,例如保留:

6.8.0-1054-oracle

然后清理更老的内核,例如 5.15.0-1045-oracle:

sudo apt purge linux-headers-5.15.0-1045-oracle linux-image-5.15.0-1045-oracle linux-modules-5.15.0-1045-oracle linux-modules-extra-5.15.0-1045-oracle linux-oracle-headers-5.15.0-1045
sudo update-grub

注意:

不要删除当前正在运行的内核。一定要先用下面命令确认:

uname -r

建议至少保留当前内核和一个较新的旧内核,方便系统异常时回退。


6. 清理临时目录

临时目录也可能占用大量空间,尤其是编译、下载、解压、安装软件后。

可以查看:

sudo du -sh /tmp /var/tmp 2>/dev/null

确认没有重要临时文件后,可以清理:

sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

对于服务器来说,清理 /tmp 通常比较安全,但如果当前有正在运行的软件依赖临时文件,建议先确认服务状态,或者在重启后清理。


7. 清理用户缓存

用户目录下的缓存常见于:

~/.cache

查看占用:

du -sh ~/.cache 2>/dev/null

如果很大,可以清理:

rm -rf ~/.cache/*

如果使用过 Python,也可以清理 pip 缓存:

pip cache purge 2>/dev/null

如果使用过 npm,可以清理 npm 缓存:

npm cache clean --force 2>/dev/null

8. 查找大文件

如果还是不知道空间被什么占用,可以查找根分区中的大文件。

查找超过 500MB 的文件:

sudo find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null

如果想查找超过 100MB 的文件:

sudo find / -xdev -type f -size +100M -exec ls -lh {} \; 2>/dev/null

参数说明:

find /         从根目录开始查找
-xdev          不跨文件系统,避免扫描挂载盘
-type f        只查找普通文件
-size +500M    查找大于 500MB 的文件
-exec ls -lh   以易读格式显示文件大小和路径

这个命令适合定位异常大的日志、镜像、模型、压缩包、数据库文件等。


9. 如果使用 Docker 或 Podman

如果系统中使用过 Docker,可以查看占用:

docker system df

清理不用的容器、镜像和构建缓存:

docker system prune -a

如果确认不用的 volume 也可以删除:

docker volume prune

注意:docker volume prune 可能删除数据库、应用数据等持久化数据,执行前需要确认。

如果使用的是 rootless Podman,数据通常在:

~/.local/share/containers

查看占用:

du -sh ~/.local/share/containers 2>/dev/null

如果确认所有 Podman 容器都不要了,可以执行:

podman system reset

或者手动删除:

rm -rf ~/.local/share/containers

手动删除前需要确认不再需要其中的容器、镜像和 volume 数据。


10. 推荐清理顺序

日常维护时,可以按照下面顺序执行。

第一步:查看根目录占用

sudo du -xh / --max-depth=1 2>/dev/null | sort -h

第二步:查看用户目录占用

du -xh /home/opc --max-depth=1 2>/dev/null | sort -h

如果不是 opc 用户,把路径替换为自己的用户目录,例如:

du -xh /home/ubuntu --max-depth=1 2>/dev/null | sort -h

第三步:清理 systemd 日志

sudo journalctl --disk-usage
sudo journalctl --vacuum-size=200M

第四步:清理 apt 缓存

sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

第五步:清理旧内核

先确认当前内核:

uname -r

再查看已安装内核:

dpkg -l | grep -E 'linux-image|linux-headers|linux-modules'

确认不需要后,再用 sudo apt purge 删除旧内核,并更新 grub:

sudo update-grub

第六步:查找大文件

sudo find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null

11. 一组常用清理命令汇总

下面是一组相对常用的清理命令:

# 查看根目录占用
sudo du -xh / --max-depth=1 2>/dev/null | sort -h

# 查看用户目录占用
du -xh /home/opc --max-depth=1 2>/dev/null | sort -h

# 查看 systemd 日志占用
sudo journalctl --disk-usage

# 清理 systemd 日志到 200MB
sudo journalctl --vacuum-size=200M

# 清理 apt 缓存
sudo apt clean
sudo rm -rf /var/lib/apt/lists/*
sudo apt update

# 清理临时目录
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*

# 清理用户缓存
rm -rf ~/.cache/*

# 查找大于 500MB 的文件
sudo find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null

12. 注意事项

清理系统空间时,建议注意以下几点:

  1. 不要直接删除 /usr、/lib、/bin、/etc 等系统目录。
  2. 不要删除当前正在运行的内核。
  3. 删除旧内核前,先执行 uname -r 确认当前内核版本。
  4. 清理 Docker 或 Podman volume 前,确认里面没有数据库、配置文件、应用数据。
  5. 清理 apt lists 后,需要重新执行 sudo apt update。
  6. 对不确定的目录,先用 du -sh 查看,再决定是否删除。

结论

Ubuntu 系统空间不足时,最常见的大头通常是:

systemd 日志
apt 缓存
旧内核
/tmp 临时文件
用户目录缓存
Docker / Podman 容器数据
AI 模型和镜像文件

推荐先使用:

sudo du -xh / --max-depth=1 2>/dev/null | sort -h

找到大目录,再逐级往下分析。不要盲目删除系统目录。

一般情况下,清理 systemd 日志、apt 缓存、旧内核和无用容器后,可以释放数 GB 到十几 GB 空间,让系统恢复到比较健康的状态。

VPS & 网络
许可协议:  CC BY 4.0
分享

相关文章

7月 6, 2026

清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法

在长期使用 Ubuntu 服务器的过程中,系统日志、apt 缓存、旧内核、用户目录缓存等都会逐渐占用大量磁盘空间。尤其是云服务器系统盘较小的情况下,很容易出现根分区 / 空间不足的问题。 本文整理一套常用、安全的 Ubuntu 系统清理方法,适合用于服务器日常维护。 1. 先查看根目录占用情况 在清

7月 2, 2026

在 3x-ui / Xray 服务端配置广告拦截,并兼顾 Netflix 等流媒体解锁

最近我把代理节点统一放在 3x-ui 上管理,同时希望广告拦截尽量放在 VPS 服务端处理,而不是每个客户端单独配置规则。这样无论是 v2rayN、小火箭、OpenClash,还是其他客户端,只要走这个节点,就能共享同一套基础广告过滤规则。 这篇记录一下我在 3x-ui 里配置 Xray 服务端广告

4月 26, 2026

从零搭建 Halo 博客:Docker + Caddy + PostgreSQL 完整指南

前言 本文记录了从零在 VPS 上搭建 Halo 博客的完整过程。技术栈: Halo 2.24.1 — 开源博客系统 Docker + Docker Compose — 容器化部署 Caddy — 反向代理,自动申请 HTTPS 证书(注意:不是 Nginx) PostgreSQL 16 — 生产级

下一篇

上一篇

在 3x-ui / Xray 服务端配置广告拦截,并兼顾 Netflix 等流媒体解锁

最近更新

  • 清理 Ubuntu 系统垃圾:释放磁盘空间的常用方法
  • 在 3x-ui / Xray 服务端配置广告拦截,并兼顾 Netflix 等流媒体解锁
  • 将 Python Web 小工具部署到 VPS:以 TCC5110 LVDS 寄存器生成器为例
  • 智能爬宠箱报警系统说明
  • PetBoxX ESP32 安全冗余机制设计与测试手册

热门标签

Halo PetBox PetBoxX

目录

©2026 蜗牛札记. 保留部分权利。

使用 Halo 主题 Chirpy