菜鸟科技网

df命令是什么?

dfDisk Free 的缩写,是 Linux 和其他类 Unix 系统中一个最基本、最常用的命令,它的核心功能是 显示文件系统的磁盘空间使用情况

df命令是什么?-图1
(图片来源网络,侵删)

df 告诉你:

  • 每个磁盘分区(或挂载点)的总容量有多大。
  • 已经使用了多少空间。
  • 还剩下多少空间可用。
  • 空间使用的百分比是多少。

基本用法

直接在终端输入 df,然后按回车,你会看到类似下面的输出:

$ df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1      104857600  20971520  78286080  21% /
tmpfs            4194304         0   4194304   0% /dev/shm
/dev/sdb1      209715200  52428800 157286400  26% /data

输出列详解:

列名 含义 解释
Filesystem 文件系统 显示的是磁盘分区的设备名(如 /dev/sda1)或挂载点(如果使用了 -P 选项)。
1K-blocks 总大小(1K块) 文件系统的总容量,单位是 1KB 的块,这个数字可能看起来很大,因为它是以 KB 为单位的。
Used 已用空间 已使用的磁盘空间,单位同样是 1KB 块。
Available 可用空间 普通用户可以使用的剩余空间,这个值通常比 Total - Used 要小,因为系统会为 root 用户预留一部分空间。
Use% 使用率 已用空间占总空间的百分比,这是监控磁盘是否快满的关键指标。
Mounted on 挂载点 该文件系统被挂载到了哪个目录下(如 , /data 等),所有对该目录的文件访问,实际上都是在对这个文件系统进行操作。

常用选项(参数)

df 命令的强大之处在于它的选项,可以让你获取更精确、更易读的信息。

df命令是什么?-图2
(图片来源网络,侵删)

-h (Human-readable) - 以人类可读的格式显示

这是最常用的选项,它会自动选择合适的单位(K, M, G, T)来显示大小,让数据一目了然。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        100G   20G   75G  21% /
tmpfs           4.0G     0  4.0G   0% /dev/shm
/dev/sdb1        200G   50G  150G  26% /data

对比上面的 -k (默认) 输出,这个是不是清晰多了?

-T (Type) - 显示文件系统类型

除了空间信息,还会显示每个分区的文件系统类型,如 ext4, xfs, ntfs, nfs 等。

$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       100G   20G   75G  21% /
tmpfs          tmpfs      4.0G     0  4.0G   0% /dev/shm
/dev/sdb1      xfs        200G   50G  150G  26% /data

-i (Inodes) - 显示 inode 使用情况

inode 是 Linux/Unix 中用于存储文件元数据(如文件名、权限、所有者、大小、数据块位置等)的数据结构。inode 耗尽 也是一个常见的磁盘“满”了的情况,即使磁盘还有剩余空间(比如存放了大量的小文件)。

df命令是什么?-图3
(图片来源网络,侵删)
$ df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sda1      26.2M  1.2M 25.0M   5% /
tmpfs         1048576     0 1048576   0% /dev/shm
/dev/sdb1      52.4M  1.5M 50.9M   3% /data
  • IUse% 显示 inode 的使用率,如果这个值达到 100%,即使磁盘空间还有,也无法再创建新文件。

-x <type>--exclude-type=<type> - 排除特定类型的文件系统

有时候你不想看某些虚拟文件系统的信息,tmpfssquashfs

# 排除 tmpfs 文件系统
$ df -h -x tmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        100G   20G   75G  21% /
/dev/sdb1        200G   50G  150G  26% /data

--output=<field_list> - 自定义输出列

这个选项非常灵活,可以让你只关心自己想要的列。

# 只显示挂载点、总大小、使用率和文件系统类型
$ df --output=source,fstype,size,usep mounted on
Source     Fstype    Size Use% Mounted on
/dev/sda1  ext4      100G  21% /
tmpfs      tmpfs     4.0G   0% /dev/shm
/dev/sdb1  xfs       200G  26% /data

常用字段有:source, fstype, itotal, iused, ipcent, size, used, avail, pcent, target (挂载点)。


实际应用场景

  1. 快速检查磁盘空间 最常用的组合:df -h,运维和开发者经常用它来快速检查哪个分区快满了。

    # 查看根分区 / 的使用情况
    $ df -h /
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1        100G   95G  2.1G  98% /

    看到这个输出,管理员就会立刻警觉,因为根分区只剩下 2.1G 空间了,需要赶紧清理。

  2. 排查“磁盘已满”但找不到大文件的问题 当应用提示磁盘空间不足,但你用 du 命令查找大文件时却找不到,这很可能是 inode 耗尽了,这时就需要使用 df -i 来检查 inode 的使用情况。

  3. 监控特定目录所在的分区 如果你的应用数据都放在 /var/log 目录下,你可能想只看这个分区的情况,可以这样:

    # 找到 /var/log 挂载在哪个分区
    $ df -h /var/log
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        50G   45G  3.1G  93% /var

    这样就能更精确地监控日志分区。


命令 功能 示例
df 显示磁盘空间使用情况(默认1K块) df
df -h 最常用,以人类可读格式显示 df -h
df -T 显示文件系统类型 df -hT
df -i 显示 inode 使用情况 df -ih
df -x tmpfs 排除特定文件系统 df -h -x tmpfs
df --output=... 自定义输出列 df --output=source,fstype,size,pcent

df 是 Linux 系统管理和日常运维中不可或缺的工具,掌握它的基本用法和常用选项,是排查磁盘问题和进行系统监控的基础。

分享:
扫描分享到社交APP
上一篇
下一篇