百度
360搜索
搜狗搜索

Linux中du命令与df的区别详细介绍

在 Linux 中,du(Disk Usage)和df(Disk Free)是两个用于查看磁盘空间的常用命令,但它们的功能和侧重点有明显区别,以下是具体对比:

1. 作用对象不同

  • du
    用于统计文件或目录占用的磁盘空间,针对具体的文件系统对象(文件、目录)。
    例:查看某个目录及其子目录的大小。

  • df
    用于查看文件系统的整体磁盘使用情况,针对磁盘分区(如/dev/sda1)或挂载点(如//home)。
    例:查看系统各个分区的总空间、已用空间、可用空间等。

2. 显示内容不同

du 的输出(示例):

bash

$   /home/user/documents

.0K /home/user/documents/temp

128M /home/user/documents/project

.5G /home/user/documents

  • 逐行显示指定目录下每个子目录 / 文件的大小(默认递归子目录)。
  • 核心指标:目录 / 文件占用的磁盘块数-h选项以人类可读格式显示)。

df 的输出(示例):

bash

$  

Filesystem Size Used Avail Use% Mounted on

/dev/sda1 50G 30G 18G % /

/dev/sdb1 100G 20G 80G % /data

tmpfs .0G .0G % /dev/shm

  • 显示每个文件系统(分区)的总容量、已用空间、可用空间、使用率、挂载点。
  • 核心指标:文件系统的整体空间状态

3. 统计方式不同

  • du

    • 直接计算文件 / 目录实际占用的磁盘块(Block),包括硬链接的重复计数(因为硬链接指向同一文件,du会分别统计每个链接所在目录的大小,但实际占用空间是单份)。
    • 不考虑文件系统元数据(如 inode 数量),仅关注文件内容的大小。
    • 可通过-s选项统计单个目录的总大小(不递归子目录)。

  • df

    • 从文件系统角度统计空间,包括:
      • 总块数、已用块数、可用块数(超级用户可用的块数)。
      • inode 使用情况(文件数量相关,通过df -i查看)。

    • 会排除已删除但仍被进程占用的文件(此时du可能显示空间占用,而df的已用空间不会减少,直到进程释放文件)。

4. 典型使用场景

  • du 的场景

    • 排查某个目录过大的问题(如/var/log/home/user)。
    • 查看特定文件或目录的大小,优化磁盘占用。

  • df 的场景

    • 检查系统磁盘是否即将占满(如根分区/的使用率)。
    • 确认文件系统的剩余空间,判断是否需要扩容或清理。

5. 特殊情况对比

  • 删除文件但进程仍占用

    • 若文件被删除但仍有进程打开,df会显示空间未释放(因为文件系统中该文件的 inode 仍被引用),而du不会显示该文件(因为文件已从目录中删除)。
    • 此时需通过lsof | grep deleted找到相关进程并重启,释放空间。

  • 稀疏文件(Sparse File)

    • du统计文件实际占用的磁盘块(忽略空洞),df统计文件声明的大小(包含空洞)。

总结

特性 du df
作用对象 文件 / 目录的空间占用 文件系统(分区)的整体空间状态
输出粒度 目录 / 文件级(可递归) 分区 / 挂载点级
统计角度 实际占用的磁盘块(内容大小) 文件系统的元数据和空间分配
典型用途 分析目录大小、定位大文件 监控磁盘分区空间、判断是否需要扩容

一句话区分

  • du 回答 “某个文件 / 目录占了多少空间”,
  • df 回答 “整个磁盘 / 分区还剩多少空间”。

阅读更多 >>>  linux命令拿文件

网站数据信息

"Linux中du命令与df的区别"浏览人数已经达到24次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:Linux中du命令与df的区别的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!