您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。