<p>df是Linux中查看文件系统磁盘空间使用情况的核心命令,能快速显示各挂载点的总容量、已用空间、可用空间及使用率(Use%),超85%需警惕;配合du可定位具体大目录,如du -sh /var/* | sort -hr | head -10;df -i用于排查inode耗尽问题;df与du结果不一致主因包括被删除但进程仍占用的文件、挂载覆盖及文件系统高级特性等。</p>

df 是查看磁盘空间占用最直接有效的命令,但仅靠它无法定位具体是哪些文件或目录吃掉了空间——必须配合 du 才能闭环排查。
用 df 快速看哪个分区快满了
执行 df -h 就能看到所有挂载点的总容量、已用、可用和使用率。重点盯住 Use% 列,超过 85% 就该警觉了。
常见误区:
- 只看
/根分区,却忽略/var、/home或/tmp等独立挂载点——它们可能在不同物理设备上,df会单独列出 - 看到
Available很小就 panic,其实部分空间被 root 保留(默认 5%),普通用户不可用,但系统仍可写入 - 没加
-h参数,面对一串以 KB 为单位的数字容易误判——比如12456789看着吓人,实际才 12GB
用 du -sh 定位大目录
df 告诉你“哪块地快塌了”,du 告诉你“谁在上面堆了废料”。典型用法:du -sh /var/* | sort -hr | head -10,能快速排出 /var 下前 10 大子目录。
注意几个关键点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
-s表示只显示总计,不展开子目录;-h是人性化单位;漏掉任一都可能输出几千行无用信息 - 别在根目录直接跑
du -sh /*——遇到/proc、/sys这类虚拟文件系统会报错甚至卡住,加--exclude或先限定范围更稳妥 -
du统计的是实际磁盘块占用,不是文件大小(例如稀疏文件、硬链接),所以结果可能和ls -lh不一致
查 inode 耗尽这种“空间没满却写不了”的情况
执行 df -i,看 IUse% 列。很多服务(如日志轮转、邮件队列、容器临时文件)会产生海量小文件,把 inode 耗光后,即使磁盘还有几十 GB 空间,也会提示 No space left on device。
这时候要结合:
-
find /var -xdev -type f | cut -d/ -f1-3 | sort | uniq -c | sort -n:统计各三级目录下文件数 -
lsof +L1:找出已被删除但进程仍在写入的文件(这类文件占着 inode 和空间,du看不到,df会计入) -
du -sh .??* *:别漏掉隐藏目录(如.cache、.local/share),它们常是罪魁祸首
为什么 df 和 du 结果对不上
这是最常被问、也最容易引向错误操作的问题。根本原因只有三个:
- 有进程正打开并写入一个已被
rm删除的文件:df认为空间未释放(文件还在磁盘上),du找不到该路径,自然不统计 - 挂载覆盖:比如在
/mnt/data挂了一个新磁盘,但原/mnt/data目录下已有内容,du会统计被盖住的旧数据,df只反映新挂载设备的空间 - ACL、快照、配额等高级特性:某些文件系统(如 XFS、Btrfs)支持子卷快照或项目配额,
du默认不穿透统计,而df显示的是底层块池总量
真遇到差值超过几个 GB,优先跑 lsof +L1 和 mount | grep -v "noexec\|proc\|sysfs",比盲目删日志安全得多。

















