Linux df 命令详解:磁盘空间查看与管理
什么是 df 命令
df(disk free)是 Linux 系统中用于显示磁盘空间使用情况的命令。它可以查看所有已挂载文件系统的磁盘使用情况,包括总容量、已用空间、可用空间和使用百分比。
基本语法
输出字段说明
执行 df 命令后,输出结果包含以下字段:
| 字段 |
说明 |
| Filesystem |
文件系统设备名 |
| Size |
总容量 |
| Used |
已使用空间 |
| Available |
可用空间 |
| Use% |
使用百分比 |
| Mounted on |
挂载点 |
思维导图:df 命令使用场景
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
┌─────────────────────────────────────────┐
│ df 命令使用场景 │
└─────────────────────────────────────────┘
│
┌─────────────────────────────────┼─────────────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 基本显示 │ │ 格式化输出 │ │ 过滤与查找 │
│ │ │ │ │ │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │ │
├─查看所有文件系统 ├─人类可读格式(-h) ├─查看特定挂载点
├─查看特定文件系统 ├─显示 inode 信息(-i) ├─获取根目录利用率
└─显示伪文件系统 └─显示总量(-T) └─过滤特定类型
│
▼
┌─────────────────────────────────┐
│ 常用组合技巧 │
├─────────────────────────────────┤
│ • df | awk 提取数据 │
│ • du 配合查找大文件 │
│ • 监控脚本集成 │
└─────────────────────────────────┘
|
常用场景示例
1. 基本显示所有文件系统
1
2
3
4
5
|
# 显示所有文件系统(包括伪文件系统)
df
# 显示真实的文件系统(排除伪文件系统)
df -a
|
2. 人类可读格式显示
1
2
3
4
5
6
7
8
|
# 以 KB/MB/GB 显示(更易读)
df -h
# 以 MB/GB 显示(使用 1024)
df -h
# 以 1000 为单位显示(与厂商一致)
df -H
|
3. 查看特定挂载点或文件系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 查看根目录所在文件系统
df /
# 查看 /home 挂载点
df /home
# 查看特定设备
df /dev/sda1
# 查看所有 ext4 文件系统
df -t ext4
# 排除特定类型
df -x tmpfs
|
4. 获取系统根目录磁盘利用率
1
2
3
4
5
6
7
8
9
10
11
|
# 方法一:直接获取根目录使用率百分比
df | awk '$6=="/"{gsub("%","",$5); print $5}'
# 方法二:更详细的输出
df -h / | awk 'NR==2{print $5}'
# 方法三:获取已用空间(以 GB 为单位)
df -BG / | awk 'NR==2{print $3}'
# 方法四:获取可用空间(以 GB 为单位)
df -BG / | awk 'NR==2{print $4}'
|
5. 显示 inode 信息
Inode 是文件系统中的索引节点,存储文件元数据。如果 inode 耗尽,即使磁盘空间充足也无法创建新文件。
1
2
3
4
5
6
7
8
|
# 显示 inode 使用情况
df -i
# 查看特定挂载点的 inode
df -i /
# 人类可读格式显示 inode
df -i -h
|
6. 显示文件系统类型
1
2
3
4
5
|
# 显示文件系统类型列
df -T
# 排除 tmpfs 显示
df -T -x tmpfs
|
7. 显示总量汇总
1
2
3
4
5
|
# 显示所有行并加上总量行
df -a --total
# 只显示总量
df --total
|
8. 格式化输出
1
2
3
4
5
6
7
8
9
|
# 仅显示指定列(使用 POSIX 输出格式)
df -P
# 显示本地文件系统
df -l
# 输出时每行一个文件系统
df -k # 以 KB 为单位
df -m # 以 MB 为单位
|
9. 高级过滤示例
1
2
3
4
5
6
7
8
9
10
11
|
# 查看已使用超过 80% 的文件系统
df -h | awk '$5>80{print}'
# 查看根分区和 home 分区的使用情况
df -h / /home
# 显示特定列(挂载点、使用率、可用空间)
df -h | awk '{print $1, $5, $4}'
# 格式化输出:设备名 | 大小 | 已用 | 可用 | 使用率 | 挂载点
df -h | awk '{printf "%-20s %10s %10s %10s %-10s %s\n", $1, $2, $3, $4, $5, $6}'
|
10. 在脚本中使用
1
2
3
4
5
6
7
8
9
|
#!/bin/bash
# 检查根目录使用率,超过 80% 时告警
USAGE=$(df -h / | awk 'NR==2 {gsub("%","",$5); print $5}')
if [ "$USAGE" -gt 80 ]; then
echo "Warning: Root partition usage is ${USAGE}%"
# 发送告警通知
fi
|
11. 监控多个挂载点
1
2
3
4
5
|
# 检查多个关键挂载点
for mount in / /home /data /var; do
usage=$(df -h "$mount" 2>/dev/null | awk 'NR==2 {print $5}')
echo "$mount: $usage"
done
|
常用参数汇总
| 参数 |
说明 |
-a |
显示所有文件系统(包括伪文件系统) |
-h |
人类可读格式(自动选择单位) |
-H |
以 1000 为单位(与厂商一致) |
-T |
显示文件系统类型 |
-i |
显示 inode 信息 |
-l |
仅显示本地文件系统 |
-k |
以 KB 为单位 |
-m |
以 MB 为单位 |
-P |
POSIX 格式输出(每行一个文件系统) |
-x |
排除指定类型的文件系统 |
-t |
仅显示指定类型的文件系统 |
--total |
显示总量 |
实际应用案例
案例 1:获取根目录磁盘利用率
1
2
3
4
5
6
7
8
|
# 获取根目录磁盘使用率百分比
df | awk '$6=="/"{gsub("%","",$5); print $5}'
# 示例输出:
# 49
# 获取更详细的根目录信息
df -h /
|
输出示例:
1
2
|
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 49G 51G 49% /
|
案例 2:查找使用率最高的分区
1
2
3
4
5
6
|
# 按使用率排序显示
df -h | grep -v 'tmpfs\|devtmpfs' | sort -k5 -hr
# 示例输出:
# /dev/sda2 500G 450G 50G 90% /data
# /dev/sda1 100G 80G 20G 80% /
|
案例 3:找出 inode 即将耗尽的文件系统
1
2
3
4
5
|
# 查找 inode 使用率超过 80% 的文件系统
df -i | awk '$5>80{print}'
# 完整显示 inode 信息
df -i -h
|
案例 4:排除伪文件系统查看磁盘
1
2
|
# 排除 tmpfs 和 devtmpfs,只看真实磁盘
df -h -x tmpfs -x devtmpfs -x squashfs
|
案例 5:与 du 命令配合使用
1
2
3
4
5
|
# 找出占用空间最大的目录
du -sh /* 2>/dev/null | sort -rh | head -10
# 查看特定目录属于哪个文件系统
df -h /var/log
|
df 与 du 的区别
| 特性 |
df |
du |
| 全称 |
disk free |
disk usage |
| 作用 |
显示文件系统整体使用情况 |
显示目录/文件占用空间 |
| 原理 |
读取文件系统元数据 |
遍历目录计算实际占用 |
| 适用场景 |
查看磁盘剩余空间 |
查找哪些目录占用空间多 |
常见问题
Q: 为什么 df 显示的已用空间比 du 多?
A: df 显示的是文件系统层面的已分配空间,而 du 只计算实际使用的文件。可能的原因:
- 已删除但仍被进程占用的文件
- 文件系统保留空间
- 目录缓存
Q: 如何查看 inode 使用情况?
A: 使用 df -i 命令
Q: 为什么 /dev/sda 显示 0 可用但 df 显示有空间?
A: 文件系统通常保留 5% 空间供 root 使用,使用 tune2fs -m 0 可调整(慎用)。
总结
df 命令是 Linux 系统管理中最常用的工具之一,主要用于:
- 查看磁盘空间使用情况
- 监控系统存储状态
- 在脚本中进行自动化监控
核心命令模板:
1
2
3
4
5
|
# 基本查看
df -h
# 获取根目录利用率
df | awk '$6=="/"{gsub("%","",$5); print $5}'
|
参考命令汇总
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 基本显示
df
# 人类可读格式
df -h
# 查看特定挂载点
df /
# 获取根目录使用率
df | awk '$6=="/"{gsub("%","",$5); print $5}'
# 显示 inode
df -i
# 显示文件系统类型
df -T
# 排除伪文件系统
df -h -x tmpfs
# 查看使用率超过 80% 的分区
df -h | awk '$5>80{print}'
|