无论你是管理着一台高并发的生产服务器,还是将 Ubuntu 作为日常办公的桌面系统,相信你一定遇到过这个令人抓狂的报错——“No space left on device”(设备上没有空间)。
磁盘空间被悄无声息地吞噬,系统开始变得卡顿,甚至连简单的软件更新都无法完成。这个时候,盲目地乱删文件不仅效率低下,还极易导致系统崩溃。我们需要的是一套精准排查的“组合拳”。
今天,我将为大家详细梳理在 Ubuntu 系统中查找、定位并清理空间占用大户的 4 种终极方法。无论你是命令行极客,还是喜欢可视化操作的新手,都能在这里找到最适合你的工具。
方法一:回归纯粹,使用内置的 du 命令(免安装,随时可用)
在没有任何第三方工具的裸机环境下,Linux 自带的 du (Disk Usage) 命令结合 sort 命令,是我们最可靠的战友。这个方法不仅高效,而且不需要你拥有外网连接去下载任何包。
核心实战命令:
打开终端,输入以下命令即可快速查看当前目录下占用空间最大的前 10 个文件或文件夹:
sudo du -ah -d 1 | sort -rh | head -n 10为什么这行命令如此强大?我们来拆解一下:
sudo:这非常关键。系统级目录(如/var或/root)往往隐藏着巨大的日志文件,没有 root 权限,du命令会满屏报错“权限不够”,导致统计结果严重失真。du -ah -d 1:这是信息采集环节。-a确保文件和目录都不被遗漏;-h贴心地将字节转换成了人类易读的 K、M、G 单位;-d 1(即 max-depth=1) 则是限制了扫描深度,防止输出成千上万行难以阅读的层级细节。sort -rh:这是信息整理环节。-r表示降序排列(大文件排在最前),而-h则是一个极其聪明的参数,它能读懂前面du输出的 M 和 G,知道 1G 比 900M 大。head -n 10:精简输出,只看“罪魁祸首”的前十名。
💡 进阶小贴士:
如果你想直接排查根目录或特定目录(比如疑点重重的/var),只需稍微修改一下命令:sudo du -ah -d 1 /var | sort -rh | head -n 10。
方法二:极客首选,终端里的瑞士军刀 ncdu(强烈推荐)
如果说 du 是静态的报告,那么 ncdu (NCurses Disk Usage) 就是动态的侦探雷达。对于需要经常维护服务器的开发者来说,ncdu 绝对是提升幸福感的利器。
它在终端内提供了一个半图形化的交互界面,你可以像使用文件管理器一样,一层一层地“钻”进目录里寻找大文件。
安装只需两步:
sudo apt update
sudo apt install ncdu开启你的探索之旅:
sudo ncdu /执行后,ncdu 会开始扫描你指定的目录(扫描根目录 / 可能需要耐心等待一两分钟)。扫描完毕后,奇迹出现了:
- 直观的条形图:每个目录和文件旁边都有大小标示和用
#组成的条形图,谁占用的空间多一目了然。 - 极简的导航:使用键盘的
↑↓方向键选择,按下Enter键即可进入子目录,按下左方向键<返回上一级。 - 一键清理:当你发现了一个毫无用处的巨大
.tar.gz备份文件时,无需退出软件,直接选中它按d键,确认后即可将其“就地正法”。
方法三:精准狙击,使用 find 命令揪出单个巨型文件
有时候,你的磁盘空间是被一两个疯狂生长的日志文件(比如 syslog 或失控的 Docker 容器日志)吃掉的。如果你不关心“目录”的大小,只想全盘搜索最大的单体文件,find 命令是你的不二之选。
全盘搜索最大文件的“魔法指令”:
sudo find / -type f -printf "%s %p\n" | sort -rn | head -n 10 | awk '{print $1/1024/1024 " MB\t" $2}'这串代码在做什么?
find / -type f:像猎犬一样从根目录出发,嗅探所有的普通文件(排除目录和软链接)。-printf "%s %p\n":只提取两个关键信息:文件大小(以字节为单位)和文件的完整路径。awk '{...}':最后一步的“美容”,将冷冰冰的字节数字除以两次 1024,转换成直观的 MB 格式并对齐输出。
(注:全盘扫描大型文件系统可能需要较长时间,请耐心等待终端返回结果。)
方法四:桌面用户的福音,图形化“磁盘使用情况分析器”
如果你正在使用 Ubuntu Desktop 版本(带有图形化桌面),那么你完全可以不碰命令行。Ubuntu 贴心地内置了一个绝佳的图形化工具,俗称 Baobab。
如何召唤它?
- 按下键盘上的
Win键(在 Linux 中称为 Super 键),打开应用启动器。 - 在搜索框中输入 “磁盘使用情况分析器” 或 Disk Usage Analyzer。
- 点击运行。
功能亮点:
打开软件后,选择你要扫描的硬盘分区。它会生成令人惊艳的同心环形图或树状图。环形图的面积越大、层级越靠外,代表该目录占用的空间越大。你只需动动鼠标,点击那些“臃肿”的色块,就能层层递进,直至找到源头,右键即可将其移至回收站。
🎁 彩蛋:找到了大文件,哪些是可以安全删除的?
排查出大文件只是第一步,千万不要乱删系统文件! 以下是 Ubuntu 系统中几个常见的“空间杀手”以及安全的清理方式:
APT 缓存垃圾 (
/var/cache/apt/archives/):随着系统更新,这里会堆积大量旧的安装包。安全清理命令:`sudo apt autoremove && sudo apt clean`。膨胀的 Systemd 日志 (
/var/log/journal/):日志文件很容易吃掉几个 G 的空间。可以限制日志保留的大小(例如限制为 100MB):`sudo journalctl --vacuum-size=100M`。Docker 镜像与容器 (
/var/lib/docker/):如果你用 Docker,废弃的镜像和停止的容器是吃盘大户。清理无用资源:`docker system prune -a`(执行前请确保了解其影响)。
总结
硬盘空间管理是每个 Linux 用户的必修课。喜欢极简与原生的你,请牢记 du 命令;追求效率与交互的你,请务必安装 ncdu;遇到极其隐蔽的巨型单体文件,让 find 帮你揪出它们;而桌面用户,点开系统自带的分析器就能轻松搞定。
定期给你的 Ubuntu 系统做个大扫除吧,让它始终保持轻盈与高效!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/995.html
转载时须注明出处及本声明。