Linux 磁盘满了:用命令行排查并释放空间
针对 Linux 磁盘占满的排查修复指南:定位满载分区、揪出大文件、清理缓存日志,并确认空间真正释放。
快速开始
Linux 磁盘一满,问题会接连出现:写入失败、应用启动报错、日志里不断刷 "No space left on device"。这份指南按最有效的顺序来:先确认哪个分区满了,再找出最占空间的东西,接着清理系统级的缓存和日志,最后确认空间确实释放了。
症状
先弄清楚哪个文件系统满了
先确认问题并定位它。用人类可读的单位查看各挂载点的使用情况,重点看 Use% 列。如果某个挂载点(通常是 /)已达 95% 以上,它就是要处理的目标。知道是哪个分区满了,后面的清理步骤才有方向。
排查被进程占用却已删除的文件
如果 df 显示磁盘快满,但 du 统计的总量却小得多,多半是进程仍在占用已删除的文件。这一步能列出这些文件及占用它们的进程——重启或结束对应进程,空间会立刻释放。如果 df 与 du 的结果一致,可以跳过这步。
当 df 显示磁盘满但 du 却找不到大文件时,多半是有进程还握着已删除的文件;lsof +L1 能把它们和占用进程一起列出来。
$ sudo lsof +L1找出最占空间的文件
对 df 标记出来的那个分区做一次扫描,按大小浏览目录树。目录和文件会从大到小排列,可以一路钻进缓存、旧下载或日志目录,直接在界面里删除不需要的内容。逐个处理排名靠前的条目,边删边留意剩余空间。
系统级清理缓存和日志
手工翻目录容易漏掉的地方,bleachbit 都知道——系统缓存、日志和常用应用的临时文件位置它都内置了。先预览有哪些清理项,再勾选执行。root 所属的缓存用 sudo 做系统级清理。在 ncdu 之后跑一遍,作为收尾很合适。
先列出可用清理项,再从终端清除缓存、日志和操作痕迹——可按用户清理,加 sudo 即可清理系统级文件。
$ bleachbit --list | head && bleachbit --clean system.tmp firefox.cache确认空间已经释放
再跑一次文件系统报告,对比清理前后的 Use%。刚清理的那个分区应该明显下降。如果还是很高,回到前面的排查步骤——最常见的原因是有进程仍占用着已删除的文件,导致 df 看不到释放。
如何确认已解决
重新查看分区使用率,确认受影响分区的 Use% 已明显低于出问题时的水平。
来源
- df(1) — report file system disk space usage依据: The df man page documents '-h' / '--human-readable' as printing sizes in powers of 1024 with human-readable units like G.
- lsof(8) - Linux manual page依据: The +L1 option selects files with a link count less than one, i.e. open files that have been unlinked (deleted).
- ncdu(1) - Linux manual page依据: ncdu is a curses-based disk usage analyzer; pressing d within the browser deletes the selected file or directory, and -o exports the scan.
- BleachBit Command Line Interface — Official Documentation依据: Documents bleachbit --list to show available cleaners and --clean cleaner.option to wipe the selected items headlessly.
- BleachBit — README依据: Official readme: BleachBit frees disk space and guards privacy by cleaning caches, cookies, log files and shredding files.
最后验证: 2026-09-21