df(disk free)是Linux系统中用于查看文件系统磁盘空间使用情况的标准工具。它能够显示已挂载文件系统的总容量、已用空间、可用空间、使用百分比等关键信息,是系统管理员监控磁盘空间、预防磁盘满问题的重要工具。
与du(disk usage)命令不同,df从文件系统层面报告整体使用情况,而非单个目录的占用。df支持多种输出格式,可以按字节、KB、MB、GB等不同单位显示,还可以查看inode使用情况(Linux中每个文件/目录占用一个inode)。掌握df是进行磁盘空间管理和容量规划的基础技能。
1. 基本用法
| 命令 | 说明 |
|---|
df | |
df /home | |
df -h | |
df -H | 人类可读格式(K、M、G,基于1000,SI单位) |
df -a | |
df --total | |
2. 大小显示格式
| 选项 | 说明 |
|---|
-h | |
-H | |
-k | |
-m | |
-B G | |
-B 512 | |
-BM | |
3. 输出列说明
默认df输出各列含义:
| 列名 | 说明 |
|---|
Filesystem | |
1K-blocks | |
Used | |
Available | |
Use% | |
Mounted on | |
4. 文件系统类型过滤
| 命令 | 说明 |
|---|
df -T | |
df -t ext4 | |
df -t xfs | |
df -x tmpfs | |
df -x squashfs | |
df -l | |
df -Th | |
常用组合:
df -Th # 显示类型+人类可读
df -t ext4 -h # 仅显示ext4,人类可读
df -x tmpfs -x devtmpfs -h # 排除临时文件系统
5. Inode使用情况
inode是Linux文件系统中存储文件元数据的结构,inode耗尽会导致无法创建新文件:
| 命令 | 说明 |
|---|
df -i | |
df -ih | |
df -i /home | |
df -i -t ext4 | |
inode列说明:
| 列名 | 说明 |
|---|
Inodes | |
IUsed | |
IFree | |
IUse% | |
6. 自定义输出字段
使用--output选项选择要显示的字段:
| 字段名 | 说明 |
|---|
source | |
fstype | |
size | |
used | |
avail | |
pcent | |
iused | |
iavail | |
ipcent | |
target | |
示例:
| 命令 | 说明 |
|---|
df --output=source,size,used,avail,pcent,target -h | |
| df --output=target,pcent -h | sort -k2 -n | |
df --output=source,fstype,target | |
7. 实用组合模式
| 命令 | 说明 |
|---|
df -h | grep -v "loop" | |
df -h --total | tail -1 | |
df -h /home /var /tmp | |
df -Th | sort -k2 | |
df -h | awk '$5 > 80 {print $5, $6}' | |
df -i | awk '$5 > 80 {print $5, $6}' | |
df -h | grep "^/dev/" | |
8. 常用选项速查
| 选项 | 完整名称 | 说明 |
|---|
-h | | |
-H | | |
-T | | |
-t | | |
-x | | |
-i | | |
-l | | |
-a | | |
--total | | |
--output | | |
-B | | |
9. 故障排查
| 问题 | 解决方法 |
|---|
| 磁盘空间显示满但du显示空间未用 | 文件可能被删除但仍被进程占用,使用lsof | grep deleted查找 |
| Use%显示100%但Available还有空间 | inode耗尽,使用df -i检查;或预留空间(5%默认预留) |
| df命令卡住 | 可能是网络文件系统(NFS)挂载点不可达,使用df -l跳过网络挂载 |
| 显示大小与实际不符 | 注意-h和-H的区别(1024 vs 1000);检查是否有配额限制 |
| loop设备占用过多输出 | 使用grep -v loop过滤,或df | grep -E "^/dev/" |
| 无法显示某些挂载点 | |
10. 与其他命令配合
| 命令 | 说明 |
|---|
watch -n 5 df -h / | |
df -h && du -sh /var/log | |
df -i /var | |
df -h | mail -s "磁盘使用报告" admin@example.com | |
温馨提示: 定期监控磁盘使用率是系统管理的基本任务。建议设置80%为告警阈值,90%为紧急阈值。当磁盘空间不足时,使用du -sh *查找大目录,结合find查找大文件。注意inode耗尽同样会导致无法写入新文件,尤其常见于邮件服务器、缓存目录等小文件多的场景。使用df -T可以快速了解文件系统类型,便于选择相应的管理策略。