快速定位大文件需用du按大小排序、聚焦/var等可疑目录、屏蔽权限错误,结合lsof查已删未释放文件,并用ncdu交互式排查。

快速定位大文件是 Linux 磁盘空间告急时最刚需的操作。核心思路是:按大小排序、聚焦可疑目录、避开缓存干扰、结合业务判断。
用 du 找出真正占空间的目录和文件
du 是磁盘使用分析的主力命令,关键在加对参数:
-
du -sh /var/* | sort -hr | head -10:查看/var下各子目录总大小,倒序取前 10(-h可读,-r倒序) -
du -sh /home/* | grep -E "G|M":快速筛出 GB/MB 级用户目录 -
find /var/log -type f -size +100M -ls:直接搜日志目录里超 100MB 的普通文件
跳过权限错误,避免分析中断
非 root 用户执行 du 常遇 Permission denied,导致结果不全或报错刷屏:
- 加
2>/dev/null屏蔽错误输出:du -sh /usr/* 2>/dev/null | sort -hr | head -5 - 更稳妥的做法是用
sudo(需有对应权限):sudo du -sh /etc/* 2>/dev/null | sort -hr | head -3
识别“看不见”的空间占用:已删除但未释放的文件
进程仍在写一个已被 rm 的文件,磁盘空间不会释放——这是常被忽略的元凶:
- 查所有被删除但仍被占用的文件:
lsof +L1(需安装lsof) - 典型场景:
nginx或java进程持续写入已被轮转删除的日志;输出中看DEL标记和SIZE列 - 解决方法:重启对应进程,或用
kill -USR1触发日志重开(如 nginx 支持)
善用 ncdu:交互式可视化利器
ncdu 是 du 的增强版,支持键盘导航、实时排序、删除确认,效率远超纯命令行:
- 安装:
sudo apt install ncdu(Debian/Ubuntu)或sudo yum install ncdu(CentOS/RHEL) - 扫描并交互浏览:
ncdu /var→ 进入后按s按大小排序,d删除选中项(带确认),→进入子目录 - 适合深度排查:比如发现
/var/lib/docker/aufs/diff/...占满空间,可逐层钻取镜像层残留
不复杂但容易忽略:别只盯着 /home 和 /root,/var、/tmp、容器存储路径和应用日志目录才是空间黑洞高发区。










