ncdu是交互式磁盘使用分析工具,可逐层钻取定位大目录,支持键盘导航、实时排序与删除确认,底层基于du但大幅简化操作流程。

直接看目录级占用,别只盯着 df 的总用量——它告诉你“满了”,但不告诉你“谁塞的”。
用 du 定位大目录
du 是唯一能告诉你“/var/log 占了 12G”“/home/user/downloads 塞了 87G”的命令。它递归统计路径下所有文件大小,但默认输出杂乱,必须加参数控制。
-
du -sh /path:快速看单个目录总大小(-s汇总,-h可读) -
du -sh /var/* | sort -hr | head -10:列出/var下前 10 大子目录(sort -hr按人类可读数值倒序) -
du -sh /home/* 2>/dev/null | sort -hr:跳过权限拒绝报错(2>/dev/null),避免中断排序
注意:du 统计的是文件实际占用空间,不是磁盘块分配量;如果目录含大量硬链接或稀疏文件,结果可能和 df 不一致。
df 和 du 结果不一致时怎么办
常见现象:某分区 df -h 显示已用 95%,但所有目录 du -sh 加起来才 70%。大概率是“已删除但未释放的文件”在作祟——进程还占着句柄,磁盘空间没真正回收。
- 查被删但仍被占用的文件:
lsof +L1(需 root 权限,+L1表示 link count = 0) - 定位具体进程:
lsof +L1 | grep deleted - 释放方式:重启对应进程,或 kill 后再清空(如日志服务可
kill -USR1触发重开文件)
另一个干扰项是 ext4 的 reserved blocks(默认 5%),df 把这部分算进“已用”,但普通用户不可用,du 不计入——这不是错误,是设计如此。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
用 ncdu 交互式钻取
当你要逐层深入某个可疑目录(比如 /var),ncdu 比拼接 du 命令高效得多,它是带界面的 du 增强版。
- 安装:
sudo apt install ncdu(Debian/Ubuntu)或sudo yum install ncdu(RHEL/CentOS) - 运行:
ncdu /var,进入后用方向键导航,Enter进入子目录,d删除选中项(慎用) - 优势:实时刷新、支持鼠标、自动忽略 .git/.cache 等常见无意义目录(可配置)
它底层仍调用 du,但省去了反复敲命令、记路径、手算大小的麻烦——尤其适合排查嵌套深、结构杂的目录。
别漏掉 tmpfs 和容器卷
很多“消失的空间”其实不在物理磁盘上:tmpfs(内存虚拟文件系统)、Docker overlay2 卷、Kubernetes emptyDir 都会出现在 df 输出里,但 du 扫不到它们的实际载体。
- 识别 tmpfs:
df -T | grep tmpfs,这类挂载点大小显示为内存容量,du对其统计恒为 0 - 查 Docker 卷:
docker system df -v,看 volumes 占用;清理:docker volume prune - 查 Kubernetes:
kubectl top pods --containers配合df看节点挂载点,容器内路径映射关系需结合describe pod
这些场景下,盯着 /var/lib/docker 用 du 是徒劳的——你得用对应生态的专用命令,否则永远差那 20% 找不到源头。










