du -hx --max-depth=1 / | sort -hr 必须加 -x 防跨挂载点扫描失真,加 2>/dev/null 避免 Permission denied 干扰排序;find 查大文件需严格大小写、-type f 和 -xdev。

du -h --max-depth=1 为什么必须加 -x 和 2>/dev/null
不加 -x 会导致 du 跨挂载点扫描,比如误入 /mnt、/proc 或 Docker overlay2 挂载目录,结果失真甚至卡死;不加 2>/dev/null 会混入大量 Permission denied 错误行,干扰排序——尤其在扫 / 时,这些错误可能比有效数据还多。
正确姿势是:sudo du -hx --max-depth=1 / | sort -hr。其中 -h 输出可读单位,-x 锁定当前文件系统,--max-depth=1 控制只看一级子项,sort -hr 才能按 GB/MB 正确倒序(-n 会把 10G 当字符串排在 2G 前面)。
find -size +1G 找不到文件?检查大小写和 -type f
find 对大小写敏感:+1G 中的 G 必须大写,小写 +1g 会被忽略;+100M 合法,但 +100m 表示 512 字节块,实际约 50KB,完全不是“大文件”。
- 必须加
-type f:否则会匹配到目录、设备文件、socket,甚至/proc下的伪文件 - 必须加
-xdev:防止跨分区扫描,比如从/开始却扫进 NFS 或 USB 挂载点 - 想带路径和大小一起看?用
find /var -xdev -type f -size +500M -ls,比-exec ls -lh {} \;更快、更稳定
ncdu 扫描时为什么建议加 -x 参数
ncdu 默认会递归所有子挂载点,如果系统挂了外接硬盘、NFS 或 Docker overlay2,它会把那些空间也计入根目录统计,导致你误判“/var/lib/docker 占了 80G”,其实那 80G 是另一个挂载设备上的数据。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
执行 sudo ncdu -x / 才真正只统计根文件系统本身。配合 df -h 先确认哪个挂载点满了,再针对性扫——比如 df -h 显示 /home 使用率 98%,那就直接 ncdu /home,别扫全盘。
du 和 find 结果对不上?可能是硬链接或已删除未释放文件
du -sh /var/log 显示 4G,但 find /var/log -type f -size +10M 只找出几个小文件——这不是命令错,而是统计逻辑不同:
-
du统计磁盘块占用(硬链接只算一次),find -size查的是文件逻辑大小(每个硬链接都算一份) - 更常见的是“幽灵文件”:进程还在写一个已被
rm的日志,路径没了但 inode 没释放,du计入,find找不到 - 验证是否存在这类文件:
lsof +L1,它会列出所有 size > 0 且 link count = 0 的打开文件
真正要清理的是磁盘块,不是文件名长度;所以优先信 du,但查不到对应文件时,lsof +L1 是最后一道排查手段。

















