ZetCode

Linux df 命令

最后修改于 2025 年 2 月 25 日

Linux 中的 df 命令用于显示文件系统的磁盘空间使用情况。它提供有关已挂载文件系统的总空间、已用空间和可用空间的信息。本教程将通过实际示例介绍 df 的基本和高级用法。

df 通常用于监视磁盘空间、识别已满的文件系统和管理存储资源。

基本用法

这会检查所有挂载点的磁盘使用情况。

basic_usage.sh
df

df 命令以表格形式列出所有已挂载的文件系统,其中包含以下列:文件系统 (Filesystem)、1K 块 (1K-blocks)、已用 (Used)、可用 (Available)、使用率 (Use%) 和挂载点 (Mounted on)。默认情况下,输出以 1KB 块显示原始数字。例如,它可能会列出 /dev/sda1 及其使用情况统计信息。可以使用 mount 命令提前查看所有挂载点。如果文件系统已满,使用率 (Use%) 将接近 100%。

以人类可读的格式显示

这会以易于理解的单位显示磁盘使用情况。

human_readable.sh
df -h

-h (human-readable,人类可读) 选项将大小转换为 MB、GB 或 TB 等单位,使其比原始块更容易理解。例如,1.2G1234567 块更清晰。这是快速检查的首选选项。可以与 watch df -h 结合使用,每 2 秒刷新一次。大小会根据数量级动态调整。

显示特定文件系统

这会检查根分区的磁盘使用情况。

specific_filesystem.sh
df /dev/sda1

df 命令以 /dev/sda1 为目标,仅显示其使用情况统计信息。您可以使用设备(例如 /dev/sdb2)或挂载点(例如 /)。这对于关注特定磁盘非常有用。运行 lsblkdf -h 来查找设备名称。如果未挂载,除非通过文件系统路径指定,否则它不会显示任何内容。

显示 Inode 使用情况

这会监视 Inode 的可用性。

inode_usage.sh
df -i

-i (inodes,inode) 选项列出每个文件系统的总 Inode、已用 Inode 和空闲 Inode,而不是空间。Inode 用于跟踪文件元数据;Inode 耗尽会阻止创建新文件,即使仍有可用空间。例如,/dev/sda1 可能显示“IUsed: 5000, IFree: 10000”。这对于包含大量小文件的目录至关重要。可以使用 ls -li 查看目录中文件的 Inode 号。

排除特定文件系统类型

这会过滤掉临时文件系统。

exclude_filesystems.sh
df -x tmpfs -x devtmpfs

-x 选项会从输出中排除 tmpfs (基于 RAM 的文件系统) 和 devtmpfs (设备文件系统),从而专注于物理存储。可以使用多个 -x 标志。首先运行 df -T 来识别文件系统类型(例如 ext4)。这对于忽略虚拟挂载点(如 /dev/run)很有用。除非添加了 -h,否则输出仍以块为单位显示。

显示文件系统类型

这会识别文件系统格式。

filesystem_type.sh
df -T

-T (type,类型) 选项会在输出中添加一个“类型”列,例如 ext4ntfsbtrfs。这有助于区分本地磁盘和网络挂载(例如 nfs)。与 -h 结合使用(df -hT)以提高可读性。使用 lsblk -f 可以获得类似的视图,其中包含设备详细信息。对于排查特定于文件系统的问题至关重要。

高级:显示总磁盘空间

这会汇总所有挂载点的使用情况。

total_disk_space.sh
df -h --total

--total 选项会附加一个“total”行,汇总所有列出文件系统的已用空间、可用空间和使用率。使用 -h 时,以可读单位显示(例如,“Total: 500G used, 1T available”)。如果使用了 -x,则会忽略排除的类型。非常适合用于获取整体存储快照。可以与 du -sh / 进行比较,以获取特定于目录的总计,请注意可能需要 root 权限。

示例:按挂载点过滤

这会检查特定挂载点的磁盘空间。

mount_point.sh
df -h /home

df -h /home 命令会显示挂载在 /home 的文件系统的使用情况,如果它是一个单独的分区,则可能显示为 /dev/sdb1。与 /dev/sda1 不同,它使用挂载点而不是设备名称。对于用户目录或外部驱动器非常方便。运行 mount | grep /home 来确认挂载点。输出是人类可读的,根据需要显示 GB 或 TB。

示例:按使用率排序输出

这会按使用率百分比对文件系统进行排序。

sort_usage.sh
df -h | sort -k5 -r

这会将 df -h 的输出通过管道传递给 sort 命令,按第五列(使用率,例如“95%”)进行反向排序(-r)——将使用率最高的排在前面。这可以快速识别已满的文件系统。标题行可能会错误地排序;可以使用 df -h | tail -n +2 | sort -k5 -r 来跳过它。可以添加 head 来限制结果数量。这对于查找繁忙服务器上的空间占用大户非常有用。

示例:带阈值的磁盘空间检查

这会标记几乎已满的文件系统。

threshold_check.sh
df -h | awk '$5+0 >= 90 {print $0}'

这使用 awk 命令过滤 df -h 的输出,打印出使用率(第五列)为 90% 或更高的行。+0 用于去除百分号,以便进行数字比较。例如,/dev/sda1 100G 95G 5G 95% / 会被显示出来。可以根据需要调整阈值(例如,80)。可以将其通过管道传递给 mail -s "Disk Full" admin@example.com 以发送警报。这可以监视关键的存储级别。

df 的最佳实践

来源

GNU df 手册

在本文中,我们探讨了使用 df 命令监视磁盘空间使用情况的各种示例,包括人类可读的输出、Inode 使用情况以及排除特定文件系统。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 Linux 教程