磁盘空间告急别硬扛:duf + ncdu 两把刀,两分钟揪出谁在偷吃硬盘
自建服务器最烦人的瞬间,不是服务挂掉,而是半…
自建服务器最烦人的瞬间,不是服务挂掉,而是半夜磁盘告警邮件叮叮响。你打开 df -h 一看:/dev/sda1 血条直接拉满 100%。这时候最怕的就是手忙脚乱 rm -rf 删错东西。今天给各位老哥分享两把排查磁盘空间的小刀——duf 和 ncdu,配合起来用,两分钟就能揪出到底是谁在偷偷吃你的硬盘。
第一把刀:duf,一眼看清全局
传统的 df 输出又密又难看,duf 是它的彩色现代化替身,GitHub 上一万多颗星。安装很简单:
# Debian/Ubuntu
sudo apt install duf
# macOS
brew install duf
装完直接敲 duf,会看到一张彩色表格:每个挂载点一行,使用率用色块和进度条表示,超过 80% 变黄、超过 90% 变红,一眼扫过去就知道谁快满了。它比 df 强在三点:自动合并重复挂载、可读性拉满、支持按类型过滤。
只看本地真实磁盘,过滤掉一堆 tmpfs 和 overlay 干扰项:
duf --only local
第二把刀:ncdu,交互式揪出大文件
duf 告诉你“哪个分区满了”,ncdu 告诉你“这个分区里谁最大”。它是 du 的交互式版本,进去之后用方向键就能一层层下钻,按大小排序,最大的目录永远排在最上面。
sudo apt install ncdu
# 扫描根目录(或指定目录)
ncdu /
进入界面后几个关键按键:上下键移动、回车进入子目录、按 d 直接删除选中项、按 s 切换排序、按 q 退出。最实用的场景是:duf 发现 /var 红了,直接 ncdu /var,一路回车下钻,两分钟内就能锁定是 Docker 的 overlay2 在膨胀,还是某个忘了轮转的日志文件在疯狂增长。
不想进交互界面?来个组合拳
# 快速列出 top 10 大目录
du -ah / 2>/dev/null | sort -rh | head -10
这条命令适合写进脚本、做定时巡检,配合告警能比出事后再排查主动得多。
最后必须提醒一句:ncdu 里按 d 是直接删除、没有回收站,删之前一定看清楚路径。排查空间问题,宁可先看后删,别半夜手滑把数据目录清了。工具是帮你省时间的,不是替你做决策的。
