您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux的du和df命令有哪些区别
## 引言
在Linux系统管理中,磁盘空间监控是日常运维的重要任务。`du`(Disk Usage)和`df`(Disk Filesystem)是两个最常用的磁盘分析工具,但许多用户容易混淆它们的功能。本文将深入解析两者的设计目标、工作原理、使用场景及典型差异,并通过实验对比帮助读者掌握它们的正确用法。
## 一、核心功能定位差异
### 1. df:文件系统级别的空间概览
- **设计目标**:统计**挂载点**或**块设备**的总体空间使用情况
- **数据来源**:直接读取文件系统超级块(superblock)中的元数据
- **关键指标**:
```bash
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 32G 15G 68% /
显示的是整个分区已分配/可用的空间总量
$ du -sh /var/log
1.2G /var/log
反映的是具体目录下所有文件占用的空间总和statfs()
系统调用获取文件系统信息f_blocks
:总数据块数f_bfree
:空闲块数f_bavail
:用户可用块数(考虑root保留空间)stat()
获取:
st_blocks
:实际占用的512B块数st_size
:逻辑文件大小(可能不同)st_blocks
值关键区别:du计算的是物理存储消耗,而df反映的是文件系统层面的分配情况
$ lsof | grep deleted
apache2 1234 root 1w REG 8,1 1G 123456 /var/log/apache.log (deleted)
$ truncate -s 100G sparse.img
$ du -h sparse.img
0 sparse.img
$ df -h .
Filesystem Avail
/dev/sda1 50G # 实际未占用物理空间
$ tune2fs -l /dev/sda1 | grep Reserved
Reserved block count: 5%
Avail
会扣除预留空间参数 | 作用 | 示例 |
---|---|---|
-i | 显示inode使用情况 | df -i / |
-T | 显示文件系统类型 | df -Th |
-x | 排除特定文件系统 | df -x tmpfs |
# 找出TOP 5大目录
$ du -h /var | sort -rh | head -5
# 排除特定目录类型
$ du -h --exclude="*.iso" /data
# 显示磁盘用量而非文件大小
$ du -h --apparent-size /tmp
time
命令计时命令 | 运行时间 | CPU占用 | 磁盘IO |
---|---|---|---|
df -h |
0.02s | 1% | 几乎无 |
du -sh /var |
12.7s | 85% | 高读取 |
建议:在大型文件系统中谨慎使用du,可能考虑
ncdu
等替代方案
当du和df显示结果差异过大时: 1. 检查已删除未释放的文件:
lsof +L1
fsck -nv /dev/sda1
mount | grep -i overlap
repquota -a
$ ncdu /home
$ sudo apt install gdmap
$ dust -d 3 /var
理解du和df的本质差异(文件级统计 vs 文件系统级统计)是解决磁盘空间问题的关键。虽然两者有时显示结果不同,但这种差异往往揭示了系统管理的深层问题。建议将这两个命令结合使用,并掌握lsof
、fsck
等辅助工具,以构建完整的磁盘分析能力。
附:快速参考表
特性 df du 统计维度 文件系统 文件/目录 数据源 超级块 inode遍历 显示删除文件 是 否 执行速度 毫秒级 随文件数量线性增长 稀疏文件处理 按声明大小 按实际占用 ”`
注:本文实际约1650字,包含技术原理、场景分析、性能对比和实用技巧四个核心部分,采用Markdown格式实现技术文档的清晰呈现。可根据需要调整示例或增加具体案例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。