df -h最直接有效,因它读取文件系统元数据中的可用块数,真实反映写入能力;du仅统计可读文件实际占用块,无法预警空间将满风险。

df -h 是最直接有效的命令,能立刻看到所有挂载分区的总容量、已用、可用和使用率。
为什么不是 du?
du 统计的是**目录或文件实际占用的磁盘块数**,它不反映文件系统整体空间——比如一个分区只剩 100MB,但 du 在该分区下统计某个目录可能只显示 50MB,完全掩盖了“即将写满”的风险。
而 df 查的是**文件系统元数据中的可用块数**,这才是程序能否成功写入的关键依据。
- 磁盘爆满时,
df -h的Use%字段会接近或达到 100%,这是第一级告警信号 -
df显示的Avail值比du总和更可信:它包含保留空间(如 ext4 默认为 5%,普通用户不可用) - 若只关心当前工作目录所在分区,可执行
df -h .,避免扫视整屏输出
df -h 输出里哪些字段必须盯住
运行 df -h 后,重点关注三列:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
Use%:超过 90% 就该介入;某些日志服务在 95%+ 时会静默丢数据 -
Mounted on:确认路径是否是你关心的挂载点(例如/、/home、/var) -
Avail:注意单位是否一致(-h是 1024 进制,-H是 1000 进制),别把 34G 误看成 34GB(厂商标称)
常见干扰项:tmpfs 和 devtmpfs 是内存虚拟文件系统,Use% 高无意义,不用管。
查完 df 还不够?下一步用 du 定位大目录
当 df -h 显示某分区使用率异常高,就用 du 往下挖:
- 快速定位一级子目录:执行
du -sh /* 2>/dev/null | sort -hr | head -n 10 - 进到可疑目录后,再执行
du -sh * | sort -hr看内部谁占得多 - 加
--max-depth=1避免递归过深卡住,尤其在/var/log或容器存储路径下 - 注意权限问题:
du遇到无读权限目录会报错(如Permission denied),加2>/dev/null过滤掉噪音
容易被忽略的陷阱
真正卡住人的往往不是命令不会用,而是以下三点:
- 没区分
df -h和df -H:前者是系统真实计算方式(1KiB = 1024B),后者是硬盘厂标法(1KB = 1000B),混用会导致“明明 df 说还有 5G,却写不进一个 4.8G 文件” - 忘记检查 inode 耗尽:
df -i才能看到IUse%,小文件极多(如邮件队列、缓存碎片)时,空间充裕但 inode 耗光,touch都失败 - 容器或快照隐藏空间:
df看不到 LVM 快照、Docker overlay2 中已删除但未清理的层,得结合lvs或docker system df

















