Linux df 命令
最后修改于 2025 年 2 月 25 日
Linux 中的 df
命令用于显示文件系统的磁盘空间使用情况。它提供有关已挂载文件系统的总空间、已用空间和可用空间的信息。本教程将通过实际示例介绍 df
的基本和高级用法。
df
通常用于监视磁盘空间、识别已满的文件系统和管理存储资源。
基本用法
这会检查所有挂载点的磁盘使用情况。
df
df
命令以表格形式列出所有已挂载的文件系统,其中包含以下列:文件系统 (Filesystem)、1K 块 (1K-blocks)、已用 (Used)、可用 (Available)、使用率 (Use%) 和挂载点 (Mounted on)。默认情况下,输出以 1KB 块显示原始数字。例如,它可能会列出 /dev/sda1
及其使用情况统计信息。可以使用 mount
命令提前查看所有挂载点。如果文件系统已满,使用率 (Use%) 将接近 100%。
以人类可读的格式显示
这会以易于理解的单位显示磁盘使用情况。
df -h
-h
(human-readable,人类可读) 选项将大小转换为 MB、GB 或 TB 等单位,使其比原始块更容易理解。例如,1.2G
比 1234567
块更清晰。这是快速检查的首选选项。可以与 watch df -h
结合使用,每 2 秒刷新一次。大小会根据数量级动态调整。
显示特定文件系统
这会检查根分区的磁盘使用情况。
df /dev/sda1
df
命令以 /dev/sda1
为目标,仅显示其使用情况统计信息。您可以使用设备(例如 /dev/sdb2
)或挂载点(例如 /
)。这对于关注特定磁盘非常有用。运行 lsblk
或 df -h
来查找设备名称。如果未挂载,除非通过文件系统路径指定,否则它不会显示任何内容。
显示 Inode 使用情况
这会监视 Inode 的可用性。
df -i
-i
(inodes,inode) 选项列出每个文件系统的总 Inode、已用 Inode 和空闲 Inode,而不是空间。Inode 用于跟踪文件元数据;Inode 耗尽会阻止创建新文件,即使仍有可用空间。例如,/dev/sda1
可能显示“IUsed: 5000, IFree: 10000”。这对于包含大量小文件的目录至关重要。可以使用 ls -li
查看目录中文件的 Inode 号。
排除特定文件系统类型
这会过滤掉临时文件系统。
df -x tmpfs -x devtmpfs
-x
选项会从输出中排除 tmpfs
(基于 RAM 的文件系统) 和 devtmpfs
(设备文件系统),从而专注于物理存储。可以使用多个 -x
标志。首先运行 df -T
来识别文件系统类型(例如 ext4
)。这对于忽略虚拟挂载点(如 /dev
或 /run
)很有用。除非添加了 -h
,否则输出仍以块为单位显示。
显示文件系统类型
这会识别文件系统格式。
df -T
-T
(type,类型) 选项会在输出中添加一个“类型”列,例如 ext4
、ntfs
或 btrfs
。这有助于区分本地磁盘和网络挂载(例如 nfs
)。与 -h
结合使用(df -hT
)以提高可读性。使用 lsblk -f
可以获得类似的视图,其中包含设备详细信息。对于排查特定于文件系统的问题至关重要。
高级:显示总磁盘空间
这会汇总所有挂载点的使用情况。
df -h --total
--total
选项会附加一个“total”行,汇总所有列出文件系统的已用空间、可用空间和使用率。使用 -h
时,以可读单位显示(例如,“Total: 500G used, 1T available”)。如果使用了 -x
,则会忽略排除的类型。非常适合用于获取整体存储快照。可以与 du -sh /
进行比较,以获取特定于目录的总计,请注意可能需要 root 权限。
示例:按挂载点过滤
这会检查特定挂载点的磁盘空间。
df -h /home
df -h /home
命令会显示挂载在 /home
的文件系统的使用情况,如果它是一个单独的分区,则可能显示为 /dev/sdb1
。与 /dev/sda1
不同,它使用挂载点而不是设备名称。对于用户目录或外部驱动器非常方便。运行 mount | grep /home
来确认挂载点。输出是人类可读的,根据需要显示 GB 或 TB。
示例:按使用率排序输出
这会按使用率百分比对文件系统进行排序。
df -h | sort -k5 -r
这会将 df -h
的输出通过管道传递给 sort
命令,按第五列(使用率,例如“95%”)进行反向排序(-r
)——将使用率最高的排在前面。这可以快速识别已满的文件系统。标题行可能会错误地排序;可以使用 df -h | tail -n +2 | sort -k5 -r
来跳过它。可以添加 head
来限制结果数量。这对于查找繁忙服务器上的空间占用大户非常有用。
示例:带阈值的磁盘空间检查
这会标记几乎已满的文件系统。
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 的最佳实践
- 使用
-h
以提高可读性:始终使用-h
以获得人类可读的输出。 - 监视 Inode:使用
-i
监视 Inode 使用情况,尤其是在拥有大量小文件的系统上。 - 排除不必要的文件系统:使用
-x
排除临时或虚拟文件系统。 - 检查特定文件系统:在
df
命令后跟特定文件系统路径,以进行有针对性的监视。
来源
在本文中,我们探讨了使用 df
命令监视磁盘空间使用情况的各种示例,包括人类可读的输出、Inode 使用情况以及排除特定文件系统。