📌 一、df 命令:查看文件系统级别的磁盘空间使用情况

✅ 全称

disk free —— 显示整个挂载的文件系统(如 //home/data)的磁盘总容量、已用空间、可用空间等。

🔧 基本语法

1
df [选项] [文件或目录]

🌟 常用选项

选项 说明
-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

# 查看 /home 所在分区的使用情况
df -h /home

# 查看 inode 使用情况(重要!)
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 —— 统计指定目录或文件在磁盘上实际占用了多少空间。

🔧 基本语法

1
du [选项] [目录或文件]

🌟 常用选项

选项 说明
-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
# 查看 /var/log 总共占多大(最常用)
du -sh /var/log

# 查看当前目录下每个子目录的大小(一层深度)
du -h --max-depth=1

# 查找最大的10个目录(结合排序)
du -h /opt | sort -hr | head -n 10

📝 注意事项

  • du 统计的是实际数据占用,可能比 ls -l 显示的“文件大小”略大(因为磁盘按 block 分配)。
  • 硬链接文件会重复计算(但实际磁盘只存一份)。
  • 需要读权限才能进入目录统计。

du 关注的是“具体路径”下的内容占用,用于定位大文件/目录。


🔁 三、df vs du:关键区别总结

对比项 df du
作用对象 文件系统(分区/挂载点) 具体目录或文件
显示内容 分区总容量、已用、可用 目录/文件实际占用空间
是否包含未释放空间? ✅ 包含(如已删除但被进程占用的文件) ❌ 不包含(只统计现存文件)
典型用途 “磁盘快满了?” “哪个目录占空间最大?”
速度 极快(查元数据) 较慢(需遍历文件)

⚠️ 常见现象:dfdu 结果不一致?

  • 原因:有文件被删除了,但仍有进程在使用它(文件描述符未关闭),磁盘空间未释放。
  • 解决
    1
    2
    3
    # 查找被删除但仍被占用的文件
    lsof +L1
    # 重启相关进程即可释放空间