du -sh 需配合 sort、grep、--max-depth 等命令才能高效定位大目录,常用组合包括 du -sh * | sort -hr 和 du -sh --max-depth=1 | sort -hr | head -n 10,还可通过 grep -e '^[0-9.]+[gt]' 筛选 gb/t 级目录,并用 lsof +l1 检查已删除但未释放的大文件。

du -sh 是排查磁盘空间占用最直接的命令之一,但它本身不带排序或筛选功能,需要配合其他命令才能高效定位“最大的目录”。关键不是单独用 du -sh,而是用它打头,再组合过滤、排序、深度控制等操作。
查看当前目录下一级子目录的大小并排序
进入你怀疑出问题的挂载点(比如 / 或 /var),运行:
du -sh * 2>/dev/null | sort -hr
-
*展开当前目录所有子项(文件和目录) -
2>/dev/null忽略权限拒绝报错(如/proc下的目录) -
sort -hr按人类可读格式逆序排序(G > M > K)
这样一眼就能看到排在最上面的几个大目录。
限制递归深度,避免卡顿或信息过载
对根目录直接跑 du -sh * 可能太慢,尤其当有大量小目录时。推荐加 --max-depth=1(或 -d 1):
du -sh --max-depth=1 / 2>/dev/null | sort -hr | head -n 10
这会列出 / 下所有一级子目录(如 /var, /usr, /home)的总大小,并取前 10 名。如果发现 /var 异常大,再进 /var 重复执行:
du -sh --max-depth=1 /var 2>/dev/null | sort -hr | head -n 10
快速聚焦 GB/T 级别目录
不用翻页找,直接 grep 出 G 或 T 单位的结果:
du -sh --max-depth=2 / 2>/dev/null | grep -E '^[0-9.]+[GT]'
再加 sort -hr 排序更清晰:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
du -sh --max-depth=2 / 2>/dev/null | grep -E '^[0-9.]+[GT]' | sort -hr
注意:^[0-9.]+[GT] 能准确匹配以数字开头、后跟 G 或 T 的行(排除掉类似 total 这类干扰项)。
补充:确认是否是“已删除但未释放”的文件
有时 df 显示满,但 du 总和远小于该值,很可能是进程还在写一个已被 rm 删除的文件(句柄仍打开)。查这类文件:
lsof +L1
或更精准地查大尺寸的已删文件:
lsof +L1 | awk '$7 > 1000000 {print $7/1024/1024 " MB", $9}'
单位是 KB,这里换算成 MB 并只显示大于 100MB 的条目。
不复杂但容易忽略










