找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2222

积分

0

好友

285

主题
发表于 昨天 11:14 | 查看: 6| 回复: 0

df(disk free)命令用于报告文件系统的磁盘空间使用情况,包括已用空间和可用空间。

基本语法

df [选项]... [文件]...

直接输入命令,不加任何参数即可使用。

$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
overlay         61202244 6409624  51651296  12% /
tmpfs              65536       0     65536   0% /dev
shm                65536       0     65536   0% /dev/shm
/dev/vda1       61202244 6409624  51651296  12% /etc/hosts
tmpfs            2006452       0   2006452   0% /proc/scsi
tmpfs            2006452       0   2006452   0% /sys/firmware
  • 显示已挂载文件系统的空间使用情况。
  • 默认以 1024 字节为单位显示。

你也可以指定文件或目录作为参数,df 会显示包含该文件或目录的文件系统信息。

$ df /home
Filesystem     1K-blocks    Used Available Use% Mounted on
overlay         61202244 6409624  51651296  12% /

$ df /dev/shm
Filesystem     1K-blocks  Used Available Use% Mounted on
shm                65536     0     65536   0% /dev/shm
  • 显示包含指定文件或目录的文件系统信息。
  • 如果参数是已挂载文件系统的设备文件(如 /dev/sda1),则显示该文件系统的空间信息。

1. 显示所有文件系统 (-a/--all)

df -a
df --all

使用该参数,输出将包括:

  • 虚拟文件系统(如 /proc
  • 重复挂载的文件系统
  • 不可访问的文件系统
$ df --all
Filesystem     1K-blocks    Used Available Use% Mounted on
overlay         61202244 6409624  51651296  12% /
proc                   0       0         0    - /proc
tmpfs              65536       0     65536   0% /dev
devpts                 0       0         0    - /dev/pts
sysfs                  0       0         0    - /sys
cgroup                 0       0         0    - /sys/fs/cgroup
mqueue                 0       0         0    - /dev/mqueue
shm                65536       0     65536   0% /dev/shm
/dev/vda1       61202244 6409624  51651296  12% /etc/resolv.conf
...

2. 人性化显示 (-h/--human-readable, -H/--si)

默认的输出单位是1K-blocks,阅读起来不够直观。-h 参数可以让数据更易读。

df -h
df --human-readable
  • 使用易读的单位(K、M、G、T)。
  • 使用 1024 为基数(1K=1024 字节)。
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          59G  6.2G   50G  12% /
tmpfs            64M     0   64M   0% /dev
shm              64M     0   64M   0% /dev/shm
/dev/vda1        59G  6.2G   50G  12% /etc/hosts
tmpfs           2.0G     0  2.0G   0% /proc/scsi
tmpfs           2.0G     0  2.0G   0% /sys/firmware

-H 参数使用国际单位制(SI),以1000为基数。

df -H
df --si
  • 使用 SI 单位制(1000 为基数)。
  • 1M=1,000,000 字节。
$ df -H
Filesystem      Size  Used Avail Use% Mounted on
overlay          63G  6.6G   53G  12% /
tmpfs            68M     0   68M   0% /dev
shm              68M     0   68M   0% /dev/shm
/dev/vda1        63G  6.6G   53G  12% /etc/hosts
tmpfs           2.1G     0  2.1G   0% /proc/scsi
tmpfs           2.1G     0  2.1G   0% /sys/firmware

3. 指定块大小 (-B/--block-size=SIZE, -k)

如果你希望以特定的块大小为单位显示,可以使用 -B 参数。

df -B 1G
df --block-size=1G
  • 指定显示单位。
  • 支持:K、M、G、T、P、E、Z、Y。
$ df -B 1G
Filesystem     1G-blocks  Used Available Use% Mounted on
overlay               59     7        50  12% /
tmpfs                  1     0         1   0% /dev
shm                    1     0         1   0% /dev/shm
/dev/vda1             59     7        50  12% /etc/hosts
tmpfs                  2     0         2   0% /proc/scsi
tmpfs                  2     0         2   0% /sys/firmware

-k 参数则强制使用 1024 字节块显示,等价于 --block-size=1K

$ df -k
Filesystem     1K-blocks    Used Available Use% Mounted on
overlay         61202244 6409624  51651296  12% /
tmpfs              65536       0     65536   0% /dev
...

4. 显示 inode 信息 (-i/--inodes)

磁盘空间充足,但系统依然报“设备无剩余空间”?这可能是因为 inode 耗尽了。df -i 命令可以帮你排查这个问题。

df -i
df --inodes
  • 显示 inode 使用情况而非块使用情况。
  • inode 包含文件的元数据(所有者、权限、时间戳等)。
$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
overlay        3907584 225278 3682306    6% /
tmpfs           501613     17  501596    1% /dev
shm             501613      1  501612    1% /dev/shm
/dev/vda1      3907584 225278 3682306    6% /etc/hosts
tmpfs           501613      1  501612    1% /proc/scsi
tmpfs           501613      1  501612    1% /sys/firmware

5. 限制显示范围 (-l/--local, -t/--type, -x/--exclude-type)

如果你只想查看本地文件系统,排除网络挂载(如NFS),可以使用 -l 参数。

df -l
df --local
  • 仅显示本地文件系统。
  • 默认显示所有(包括网络文件系统)。

要筛选特定类型的文件系统,可以使用 -t 参数。

df -t ext4
df --type=ext4
  • 仅显示指定类型的文件系统。
  • 可多次使用以指定多种类型,例如 df -t ext4 -t xfs
$ df -t ext4
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda1       61202244 6409624  51651296  12% /etc/hosts

反过来,你也可以使用 -x 参数排除特定类型的文件系统。

df -x nfs
df --exclude-type=nfs
  • 排除指定类型的文件系统。
  • 同样可多次使用以排除多种类型。
$ df -x ext4
Filesystem     1K-blocks    Used Available Use% Mounted on
overlay         61202244 6409624  51651296  12% /
tmpfs              65536       0     65536   0% /dev
shm                65536       0     65536   0% /dev/shm
tmpfs            2006452       0   2006452   0% /proc/scsi
tmpfs            2006452       0   2006452   0% /sys/firmware

6. 自定义输出格式 (--output)

当你需要将 df 的输出用于脚本或仅关心特定字段时,--output 参数提供了极大的灵活性。

df --output=target,size,used,avail,pcent
  • 自定义显示的列及其顺序。
  • 有效字段包括:
    • source:挂载源(设备)。
    • fstype:文件系统类型。
    • target:挂载点。
    • size:总块数。
    • used:已用块数。
    • avail:可用块数。
    • pcent:使用百分比。
    • itotal:总 inode 数。
    • iused:已用 inode 数。
    • iavail:可用 inode 数。
    • ipcent:inode 使用百分比。
    • file:命令行指定的文件名。

示例:

$ df --output=target,size,used,avail,pcent
Mounted on    1K-blocks    Used    Avail Use%
/              61202244 6409624 51651296  12%
/dev              65536       0    65536   0%
/dev/shm          65536       0    65536   0%
/etc/hosts     61202244 6409624 51651296  12%
/proc/scsi      2006452       0  2006452   0%
/sys/firmware   2006452       0  2006452   0%

不加字段参数时,--output 会显示所有可用字段。

$ df --output
Filesystem     Type     Inodes  IUsed   IFree IUse% 1K-blocks    Used    Avail Use% File Mounted on
overlay        overlay 3907584 225278 3682306    6%  61202244 6409624 51651296  12% -    /
tmpfs          tmpfs    501613     17  501596    1%     65536       0    65536   0% -    /dev
...

7. POSIX 兼容模式 (-P/--portability)

为了确保脚本在不同Unix系统间的可移植性,可以使用POSIX兼容模式。

df -P
df --portability
  • 使用 POSIX 输出格式。
  • 每行显示一个完整的文件系统信息。
  • 输出格式不受环境变量影响(除非设置了 POSIXLY_CORRECT)。
$ df --portability
Filesystem     1024-blocks    Used Available Capacity Mounted on
overlay           61202244 6409624  51651296      12% /
tmpfs                65536       0     65536       0% /dev
...

8. 显示文件系统类型 (-T/--print-type)

想快速了解各个挂载点使用的是什么类型的文件系统吗?-T 参数可以帮你。

df -T
df --print-type
  • 在输出中增加一列,显示每个文件系统的类型。
  • 常见类型:ext4、xfs、btrfs、nfs、ntfs、vfat 等。
$ df -T
Filesystem     Type    1K-blocks    Used Available Use% Mounted on
overlay        overlay  61202244 6409624  51651296  12% /
tmpfs          tmpfs       65536       0     65536   0% /dev
shm            tmpfs       65536       0     65536   0% /dev/shm
/dev/vda1      ext4     61202244 6409624  51651296  12% /etc/hosts
...

9. 同步数据 (--sync, --no-sync)

在某些系统上,为了获取最新的磁盘使用数据,可以在执行 df 前先调用 sync 系统调用。

df --sync
  • 获取数据前调用 sync 系统调用。
  • 在某些系统上(如 Solaris)可获得更新数据。
  • 但会使 df 命令运行变慢。

如果追求速度,可以使用 --no-sync 参数(这也是默认行为)。

df --no-sync
  • 不调用 sync。
  • 运行更快,但数据可能不是最新的。

10. 显示总计 (--total)

当你需要了解所有显示的文件系统空间总和时,--total 参数非常有用。

df --total
  • 在输出最后一行显示所有文件系统的空间总计。
$ df --total
Filesystem     1K-blocks     Used Available Use% Mounted on
overlay         61202244  6409624  51651296  12% /
tmpfs              65536        0     65536   0% /dev
shm                65536        0     65536   0% /dev/shm
/dev/vda1       61202244  6409624  51651296  12% /etc/hosts
tmpfs            2006452        0   2006452   0% /proc/scsi
tmpfs            2006452        0   2006452   0% /sys/firmware
total          126548464 12819248 107446568  11% -

最佳实践与总结

  1. 日常使用推荐df -h。这是最常用、可读性最高的组合,能快速概览磁盘使用情况。
  2. 排查磁盘满问题:同时检查 df -hdf -i。磁盘空间和 inode 数量是两个独立的资源,任一耗尽都会导致“磁盘已满”错误。
  3. 脚本中使用:使用 --output 参数。这能确保输出格式稳定,便于后续用 awkgrep 等工具进行解析。
  4. 需要最新数据时(某些系统):使用 --sync,但需注意性能损耗。
  5. 性能优先时:使用 --no-sync(默认行为)。

尤其是在排查磁盘空间满的问题时,除了容量外,查看 inode 使用情况是一个关键步骤。当然,inode 的规划需要根据服务器的预期用途,在格式化磁盘时就做好相应的设置。希望这篇在云栈社区分享的指南能帮助你更高效地使用 df 命令进行磁盘管理。




上一篇:红黑树 vs B+树:面试高频区别解析与数据库选型B+树深度原因
下一篇:从编辑器到容器编排:这7个优质开源项目如何帮你提高开发效率
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-16 00:39 , Processed in 0.462171 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表