「df(1)」-

  LINUX MANUAL PAGES

报告文件系统硬盘的使用情况

命令语法格式

df [OPTION]… [FILE]…

命令描述

在没有参数的情况下,df报告所有当前挂载的文件系统(所有类型)上可使用和已使用的空间。否则,df会报告包含每一个FILE参数的文件系统。

通常情况下,磁盘空间以1024字节为单位打印,但可以覆盖(参见块大小)。非整数量向上舍入到下一个更高的单位。

对于绑定挂载和不带参数,df仅输出文件系统列表(mtab)中的设备的统计信息,设备名为最短的装载点名,即,它会隐藏重复条目,除非指定了-a选项。

使用相同的逻辑,如果对于装载点具有相同装置编号的装载点的实际块装置存在另一个装载入口,则df省略伪装置的装载入口,例如,如果已经挂载了真实的根设备,则不会在默认情况下显示早期启动的伪文件系统“rootfs”。

如果参数FILE解析为包含挂载的文件系统的特殊文件,则df将显示该文件系统上的可用空间,而不是包含该设备节点的文件系统上的可用空间。GNU的df不会尝试确定未挂载的文件系统上的磁盘使用情况,因为在这种情况下,都需要对文件系统结构具有不熟悉的知识。

命令支持的选项及含义

–no-sync
在获取任何使用数据之前,请勿调用sync系统调用。这可能会使df在运行多个磁盘的系统上运行速度明显加快,但在某些系统上(特别是SunOS),结果可能会稍微过时。这是默认设置。

–sync
在获取使用情况数据之前,调用sync系统调用。在某些系统上(特别是SunOS),这样做会产生更多的最新结果,但通常这个选项会使df变得更慢,特别是当文件系统很多或非常繁忙时。

指定输出列

–output, –output[=FIELD_LIST]
使用FIELD_LIST定义的输出格式,或者如果省略FIELD_LIST,则会输出所有字段。在后一种情况下,列的输出顺序符合以下字段说明的顺序。

使用–output和每个选项-i,-P和-T是相互排斥的。

参数FIELD_LIST是要包含在df输出中的列的逗号分隔列表,因此可以有效地控制输出列的顺序。因此每个字段可以在选择的地方使用,但只能使用一次。

参数FIELD_LIST中的有效字段名如下:

  • source’ — 挂载点的来源,通常是一个设备。
  • fstype’ — 文件系统类型。
  • itotal’ — inode的总数。
  • iused’ — 已使用的inode的数量。
  • iavail’ — 可使用的节点的总数。
  • ipcent’ — iused除以itotal的百分比。
  • size’ — 块总数。
  • used’ — 已使用的块总数。
  • avail’ — 可使用的块总数。
  • pcent’ — used除以size的百分比。
  • file’ — 文件名,如果命令行中指定了。
  • target’ — 挂载点。

像往常一样,块和inode统计信息的字段受到缩放选项(如-h)的影响。

参数FIELD_LIST的定义甚至可以分成几个–output来指定:

#!/bin/sh

# Print the TARGET (i.e., the mount point) along with their percentage
# statistic regarding the blocks and the inodes.
df --out=target --output=pcent,ipcent

# Print all available fields.
df --o

-i, –inodes
列出inode使用信息,而不是块使用情况。inode(索引节点(index node)的缩写)包含有关文件的信息,例如其所有者,权限,时间戳,磁盘上的位置。

-P, –portability
使用POSIX输出格式。这与默认格式类似,除了以下内容:

  • 有关每个文件系统的信息总是只打印在一行上; 一个挂载设备不会自己放在一行上。这意味着如果装载设备名称长度超过20个字符(例如,对于某些网络装载),则这些列未对齐。
  • 标题输出行中的标签会符合POSIX规范。
  • 缺省块大小和输出格式不受DF_BLOCK_SIZE、BLOCK_SIZE、BLOCKSIZE环境变量的影响。但是,默认块大小仍受POSIXLY_CORRECT的影响:如果设置了POSIXLY_CORRECT,则其值为512,否则为1024。请参阅「块大小」。

–total
所有参数处理完毕后,打印所有参数的总和。这可以用来找出所有列出的设备的总磁盘大小、使用情况、可用空间。如果没有指定参数,df将通过抑制重复的远程文件系统,以此来尽力避免对总可用空间来说无关紧要的文件系统。

对于总计行,df在source列中打印“total”,在target列中打印“-“。如果没有source列(请参阅–output),则df将’total’打印到target列(如果存在)。

数值单位

-B size, –block-size=size
在打印之前,调整显示的单位(参见「块尺寸」)。例如,-BG以1,073,741,824字节为单位打印大小。

-h, –human-readable
为每个大小值添加一个大小字母。例如,mebibytes的’M’。使用1024的倍数,而不是1000;’M’代表1,048,576字节。这个选项相当于--block-size=human-readable。如果你喜欢1000的倍数,请使用–si选项。

–si
为每个大小附加一个SI风格的缩写。例如,mebibytes为’M’。使用1000的倍数,而不是1024;’M’代表1,000,000字节。该选项等同于--block-size=si。如果你喜欢1024的倍数,使用-h或–human-readable选项。

-H
等价于–si。

-k
以1024字节块打印大小,覆盖默认块大小(参阅块大小)。该选项相当于–block-size=1K。

系统类型

-a, –all
在列表中包含虚拟、重复、不可访问的文件系统,这些文件系统在默认情况下被忽略。

虚拟文件系统通常是特殊用途的伪文件系统,如’/proc’,没有关联的存储。重复文件系统是本地或远程文件系统,它们挂载在本地文件层次结构的不同位置,或绑定挂载的位置。无法访问的文件系统是那些被挂载但随后由另一个文件系统在此时重载的文件系统,或者由于挂载点的权限等原因而无法访问的文件系统。

-T, –print-type
打印每个文件系统的类型。

这里打印的类型与使用-t和-x可以包含或排除的类型相同。打印的特定类型是系统支持的任何类型。以下是一些常用名称(该列表当然不是详尽无遗的):

  • nfs,NFS文件系统,即从另一台机器上通过网络挂载的文件系统。这是一种似乎被所有系统统一使用的类型名称。
  • ext2, ext3, ext4, xfs, btrfs…,本地挂载的硬盘上的文件系统。(这个系统甚至可以支持多种类型;Linux如此。)
  • iso9660, cdfs,CD或DVD驱动器上的文件系统。HP-UX使用’cdfs’,大多数其他系统使用’iso9660’。
  • ntfs,fat,MS-Windows/MS-DOS使用的文件系统。

-l, –local
只输出本地文件系统。

默认情况下,如果未指定该选项,还会列出远程文件系统。

-t fstype, –type=fstype
将输出列表限制为fstype指定的文件系统类型。多个文件系统类型可以通过给出多个-t选项来指定。默认情况下,不省略任何任何类型的文件系统。

-x fstype, –exclude-type=fstype
将输出列表限制为除了fstype类型的文件系统。通过提供多个-x选项可以排除多种文件系统类型。缺省情况下,没有文件系统类型被省略。

其他选项

-v
已忽略;用于与System V版本的df兼容。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

注意事项

命令df仅安装在具有可用挂载表的系统上,因此可移植脚本中不应依赖其存在。

退出状态

退出状态为零表示成功,非零值表示失败。

失败包括未产生输出的情况,因此你可以检查命令的退出状态,如’df -t ext3 -t reiserfs dir’,来测试dir是否在’ext3’或’reiserfs’类型的文件系统上。

由于需要使用文件系统列表(mtab)来确定文件系统类型,因此失败情况中会包括无法读取该列表,并将一个或多个选项-a,-l,-t,-x与一个文件名参数一起使用。

使用示例

排序df的输出,使同文件系统的分区尽量聚集在一起:

# df -h | ( sed -u ‘1q’ && sort )

如上示例。

相关手册

查看在线手册:http://www.gnu.org/software/coreutils/df

查看info手册:info ‘(coreutils) df invocation’

参考文献

  • man 1 df, version GNU coreutils 8.28

更新日志

  • 06/07/2018 创建文章
  • 06/17/2018 调整文章内容。