📊 一、命令基础:核心功能与定位
df(Disk Free)
- 功能:显示文件系统级别的磁盘空间使用情况,包括总容量、已用空间、可用空间、使用率百分比及挂载点。
- 适用场景:快速检查磁盘分区是否空间不足,例如监控根分区(/)或数据盘(/data)的剩余空间。
du(Disk Usage)
- 功能:统计目录或文件级别的磁盘占用空间,支持递归计算子目录。
- 适用场景:定位大文件/大目录(如日志目录/var/log),分析存储消耗来源。
🛠️ 二、命令详解:选项与示例
1. df命令常用选项及示例
-h | 人类可读格式(KB/MB/GB) | df -h | 显示易读的磁盘使用情况 |
-T | 显示文件系统类型(如ext4、xfs) | df -T /home | 输出包含文件系统类型的分区信息 |
-i | 显示inode使用情况 | df -i | 检查inode是否耗尽(小文件过多时常见) |
–total | 显示所有文件系统的总计 | df -h –total | 末尾汇总所有分区的空间使用 |
典型输出:
$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 20G 15G 4.0G 79% /
/dev/sdb1 xfs 100G 60G 40G 60% /data
2. du命令常用选项及示例
-h | 人类可读格式 | du -h ~/Documents | 显示目录下各文件/子目录大小 |
-s | 仅显示汇总值(不展开子目录) | du -sh /var/log | 输出目录总大小(如1.2G /var/log) |
–max-depth=N | 限制递归深度 | du -h –max-depth=1 /usr | 仅显示/usr下一级子目录大小 |
-a | 包括文件在内的所有项 | `du -ah /tmp | sort -rh` |
-c | 显示总计 | du -ch *.log | 计算所有.log文件总大小 |
典型场景:
# 查找当前目录下占用最大的前5个目录
$ du -h –max-depth=1 | sort -rh | head -n 5
12G ./database
8.4G ./logs
3.2G ./backups
1.1G ./downloads
24G . # 当前目录总计
⚖️ 三、核心区别:df vs du
作用范围 | 文件系统整体(分区/挂载点) | 具体目录或文件 | df读取文件系统元数据;du遍历文件 |
输出内容 | 总容量、可用空间、使用率百分比 | 目录/文件的实际占用空间 | df关注剩余空间;du关注已用空间 |
性能影响 | 低(直接读取内核缓存) | 高(需递归遍历文件树) | 大目录下du可能消耗较多I/O资源 |
不一致场景 | 显示100%已用,但du统计值更少 | 统计值小于df的已用空间 | 文件被删除但未释放(进程仍占用句柄) |
💡 关键差异示例:
若rm删除一个大文件后,du统计值立即减少,但df显示空间未释放——因文件被进程占用(可通过lsof | grep deleted定位进程并重启释放)。
🔍 四、典型应用场景
1. 磁盘空间不足排查
- 步骤1:用df -h定位满盘的分区(如/分区使用率95%)。
- 步骤2:用du -sh /* –max-depth=1检查根目录下各子目录大小,找到最大占用(如/var)。
- 步骤3:逐层深入分析:du -h –max-depth=1 /var → du -h /var/log | sort -rh。
2. Inode耗尽问题
- 现象:创建文件失败,但df -h显示空间充足。
- 解决:df -i检查inode使用率,若100%则清理小文件(如临时文件、缓存)。
3. 自动化监控脚本
# 磁盘空间超过90%时邮件告警
THRESHOLD=90
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo "警告:根分区使用率 ${USAGE}%" | mail -s "磁盘告警" admin@example.com
fi
🧩 五、命令组合技巧
💎 总结
- df:监控分区整体空间,用于预防磁盘耗尽。
- du:分析具体存储消耗来源,用于清理大文件/目录。
- 黄金组合:df -h → 定位问题分区 → du –max-depth逐层排查 → 清理目标
⚠️ 操作注意:生产环境慎用rm -rf,建议先truncate -s 0 大文件清空内容,再逐步删除。对关键目录操作前备份(如tar -czvf backup.tar.gz /path)。
评论前必须登录!
注册