📌 一、df 命令:查看文件系统级别的磁盘空间使用情况
✅ 全称
disk free —— 显示整个挂载的文件系统(如 /、/home、/data)的磁盘总容量、已用空间、可用空间等。
🔧 基本语法
🌟 常用选项
| 选项 |
说明 |
-h |
human-readable:以 KB、MB、GB 等易读单位显示(最常用!) |
-T |
显示文件系统类型(如 ext4、xfs、btrfs) |
-i |
显示 inode 使用情况(排查“空间未满但无法创建文件”问题) |
| 不加路径 |
显示所有已挂载文件系统的信息 |
💡 示例
1 2 3 4 5 6 7 8 9 10 11
| df -h
df -h /home
df -i
df -hT
|
📊 输出字段说明(df -h)
1 2
| Filesystem Size Used Avail Use% Mounted on /dev/sda2 50G 30G 18G 63% /
|
- Filesystem:设备或分区(如
/dev/sda2)
- Size:总容量
- Used:已用空间
- Avail:可用空间
- **Use%**:使用百分比
- Mounted on:挂载点(即该分区对应哪个目录)
✅ df 关注的是“分区/挂载点”层面的空间,不是具体某个目录。
📌 二、du 命令:查看目录或文件的实际磁盘占用
✅ 全称
disk usage —— 统计指定目录或文件在磁盘上实际占用了多少空间。
🔧 基本语法
🌟 常用选项
| 选项 |
说明 |
-h |
human-readable:以 KB/MB/GB 显示 |
-s |
summarize:只显示总大小,不列出子目录(常与 -h 搭配) |
--max-depth=N |
只统计到第 N 层子目录(如 --max-depth=1) |
-a |
显示所有文件和目录(默认只显示目录) |
💡 示例
1 2 3 4 5 6 7 8
| du -sh /var/log
du -h --max-depth=1
du -h /opt | sort -hr | head -n 10
|
📝 注意事项
du 统计的是实际数据占用,可能比 ls -l 显示的“文件大小”略大(因为磁盘按 block 分配)。
- 对硬链接文件会重复计算(但实际磁盘只存一份)。
- 需要读权限才能进入目录统计。
✅ du 关注的是“具体路径”下的内容占用,用于定位大文件/目录。
🔁 三、df vs du:关键区别总结
| 对比项 |
df |
du |
| 作用对象 |
文件系统(分区/挂载点) |
具体目录或文件 |
| 显示内容 |
分区总容量、已用、可用 |
目录/文件实际占用空间 |
| 是否包含未释放空间? |
✅ 包含(如已删除但被进程占用的文件) |
❌ 不包含(只统计现存文件) |
| 典型用途 |
“磁盘快满了?” |
“哪个目录占空间最大?” |
| 速度 |
极快(查元数据) |
较慢(需遍历文件) |
⚠️ 常见现象:df 和 du 结果不一致?
- 原因:有文件被删除了,但仍有进程在使用它(文件描述符未关闭),磁盘空间未释放。
- 解决: