du and df 命令区别

本文对比了du和df两个命令报告磁盘使用情况的不同之处。du命令递归地计算指定目录下所有文件占用的空间,而df则显示已挂载文件系统的总容量、已用空间和可用空间。两者差异主要源于df会预留部分空间供系统使用,且当后台进程写入已被删除的文件时,df能记录这部分空间使用情况,而du无法识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Document Id: 26928Synopsis: du and df Differences (originally published 8/91)
Update date: 2001-05-13Description: du and df Differences
-- --- -- -----------

This article explains how reporting disk usage du and reporting free disk space
on file systems df may show different numbers.

du
--

The du user command gives the number of kilobytes contained in all files and,
recursively, directories within each specified directory or file (filename).
If filename is missing, `.' (the current directory) is used.  A file which
has multiple links to it is only counted once.

EXAMPLE:

  system % du

  5    ./jokes
  33   ./squash
  44   ./tech.papers/lpr.document
  217  ./tech.papers/new.manager
  401  ./tech.papers
  144  ./memos
  80   ./letters
  388  ./window
  93   ./messages
  15   ./useful.news
  1211 .

Note that the last number, 1211 is the grand total (in kilobytes) for the
directory.

df
--

The df user command displays the following information:

  amount of disk space occupied by currently mounted file systems
  the amount of used and available space
  how much of the file system's total capacity has been used

Used without arguments, df reports on all mounted file systems.

EXAMPLE:

  system % df

  Filesystem  kbytes  used  avail  capacity  Mounted on
  /dev/ip0a    7445    4714 1986   70%       /
  /dev/ip0g   42277   35291 2758   93%       /usr

Note: used plus avail is less than the amount of space in the file system
(kilobytes) because the system reserves a fraction of the space in the file
system to allow its allocation routines to work well.  The amount reserved is
typically about 10%.  (This may be adjusted using the tunefs command.  Refer to
the man pages on tunefs(8) for more information.)  When all the space on a file
system, except for this reserve, is in use, only the super-user can allocate
new files and data blocks to existing files.  This, however, may cause the file
system to be over allocated.  When a file system is over allocated in this way,
df may report that the file system is more than 100% utilized.

If arguments to df are disk partitions (for example, /dev/ip0as or path names),
df produces a report on the file system containing the named file.  Thus, df
shows the amount of space on the file system containing the current directory.

Problem Definition
------- ----------

This section gives the technical explanation of why du and df sometimes report
different totals of disk space usage.

When a program that is running in the background writes to a file while the
process is running, the file to which this process is writing is deleted.
Running df and du shows a discrepancy in the amount of disk space usage.  The
df command shows a higher value.

Explanation Summary
----------- -------

When you open a file, you get a pointer.  Subsequent writes to this file
references this file pointer.  The write call does not check to see if the file
is there or not.  It just writes to the specified number of characters starting
at a predetermined location.  Regardless of whether the file exist or not, disk
blocks are used by the write operation.

The df command reports the number of disk blocks used while du goes through the
file structure and and reports the number of blocks used by each directory.  As
far as du is concerned, the file used by the process does not exist, so it does
not report blocks used by this phantom file.  But df keeps track of disk blocks
used, and it reports the blocks used by this phantom file.
### Linux `du` 命令与 `df` 命令区别及使用方法 #### 一、命令功能概述 - **`du` 命令**主要用于统计指定目录或文件的磁盘使用情况,能够显示单个文件或者整个目录树所占用的空间大小[^1]。 - **`df` 命令**则用于查看文件系统的整体磁盘空间使用状况,包括已用空间、可用空间以及挂载点等信息[^4]。 --- #### 二、具体区别 | 特性 | `du` 命令 | `df` 命令 | |---------------------|-----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------| | **主要用途** | 统计特定目录或文件的磁盘使用量 | 查看整个文件系统的磁盘空间使用情况 | | **操作对象** | 单个文件或目录 | 文件系统 | | **输出内容** | 展示每个子目录及其父目录的磁盘占用情况 | 提供文件系统的总量、已用量、剩余量和挂载位置 | | **单位支持** | 支持多种单位(默认为字节),可通过参数调整 | 默认以 KB 或其他指定单位展示 | --- #### 三、常见选项与用法 ##### 1. `du` 命令常用选项 - `-h, --human-readable`: 使用人类可读的形式表示文件大小 (如 K、M、G)[^5]。 - `-s, --summarize`: 只显示总计值而不列出每个子项。 - `-a, --all`: 列出所有文件和目录的信息。 - `-c, --total`: 在最后加上总计数。 - `-i`: 显示 inode 的使用情况而非实际数据块[^3]。 ###### 示例代码 ```bash # 显示当前目录下的总大小 du -sh . # 显示当前目录下每个文件夹的具体大小 du -h --max-depth=1 . ``` ##### 2. `df` 命令常用选项 - `-h, --human-readable`: 类似于 `du` 的 `-h` 参数,使输出更易理解。 - `-T`: 显示文件系统类型。 - `-k`: 以千字节(KB)为单位报告磁盘空间。 - `-t type`: 仅显示某种类型的文件系统。 - `-x type`: 排除某些类型的文件系统。 ###### 示例代码 ```bash # 查看所有挂载点的磁盘使用情况 df -h # 同时显示文件系统类型 df -Th ``` --- #### 四、注意事项 - 如果需要分析某个目录内部结构并找出大文件,则应优先考虑使用 `du` 命令- 对于监控服务器的整体存储状态而言,`df` 更加适合因为可以快速获取全局视角的数据。 - 当涉及特殊需求比如只关心 iNode 数目而不是物理存储容量的时候可以选择附加相应标志位来调用上述工具之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值