Unix系统中的df命令是“disk free”的缩写,主要用于显示文件系统的磁盘空间使用情况,通过该命令,用户可以快速了解磁盘分区的总容量、已用空间、可用空间、使用百分比以及文件系统的挂载点等信息,是系统管理和日常运维中不可或缺的工具,以下是关于df命令的详细介绍。

df命令的基本语法为df [选项] [文件]
,其中文件参数为可选,用于显示指定文件所在文件系统的磁盘使用情况,如果不指定文件,则默认显示所有已挂载文件系统的信息,常用的选项包括:-h(以人类可读的格式显示,如KB、MB、GB)、-T(显示文件系统类型)、-i(显示inode使用情况而非块使用情况)、-k(以KB为单位显示)、-m(以MB为单位显示)等。
在默认情况下,df命令的输出结果包含多个列,各列的含义如下:Filesystem表示文件系统的设备名称或挂载点,1K-blocks表示以1KB为单位显示的总块数,Used表示已使用的块数,Available表示可用的块数,Use%表示使用百分比,Mounted on表示文件系统的挂载点,执行df
命令后可能会看到类似如下的输出:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 104857600 20971520 83886080 20% / tmpfs 2097152 0 2097152 0% /dev/shm /dev/sdb1 209715200 104857600 104857600 50% /data
从上述输出可以看出,根文件系统/dev/sda1总容量约为100GB,已使用约20GB,可用约80GB,使用率为20%;而/data分区总容量约200GB,已使用和可用各100GB,使用率为50%,通过这些信息,管理员可以及时发现磁盘空间不足的分区,避免因磁盘满而导致服务中断。

为了更直观地查看磁盘使用情况,通常会结合-h选项使用,例如df -h
命令会将块大小转换为更易读的单位,如G、M、K等,输出示例如下:
Filesystem Size Used Avail Use% Mounted on /dev/sda1 100G 20G 80G 20% / /dev/sdb1 200G 100G 100G 50% /data
使用-T选项可以显示文件系统的类型,例如ext4、xfs、nfs等,这对于排查文件系统相关问题非常有帮助,例如df -Th
的输出会增加Type列:
Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 100G 20G 80G 20% / /dev/sdb1 xfs 200G 100G 100G 50% /data

df命令还支持查看特定文件或目录所在文件系统的磁盘使用情况,要查看/var/log目录所在分区的空间使用情况,可以执行df /var/log
命令,这在需要检查特定目录的磁盘占用时非常实用。
对于inode使用情况的监控,可以使用-i选项,inode是文件系统中用于存储文件元数据的数据结构,每个文件或目录都需要一个inode,当inode耗尽时,即使磁盘空间仍有剩余,也无法创建新文件,例如df -i
命令会显示inode的使用情况:
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 5242880 1048576 4194304 20% / /dev/sdb1 16777216 8388608 8388608 50% /data
从输出中可以看到,根文件系统的inode使用率为20%,而/data分区的inode使用率为50%,如果某个分区的IUse%接近100%,即使磁盘空间充足,也需要清理临时文件或小文件以释放inode。
在脚本编程中,df命令的输出经常被解析以实现自动化监控,通过提取Use%列的值,可以编写脚本在磁盘使用率超过阈值时发送告警,需要注意的是,不同Unix系统(如Linux、AIX、Solaris)的df命令输出格式可能略有差异,因此在编写跨平台脚本时需要考虑兼容性。
除了基本功能外,df命令还支持一些高级选项。--block-size=SIZE可以指定块大小单位,--output=FIELD可以自定义输出列,--total可以显示所有文件系统的总计信息,例如df --output=source,fstype,size,used,avail,pcent,target -h --total
命令会以指定格式输出并添加总计行:
Source Fstype Size Used Avail Use% Target /dev/sda1 ext4 100G 20G 80G 20% / /dev/sdb1 xfs 200G 100G 100G 50% /data total - 300G 120G 180G 40% -
在实际应用中,df命令常与其他命令结合使用,与du命令配合可以快速定位大文件或目录:先用df查看空间占用大的分区,再用du -sh *在该分区内查找占用空间最多的目录,通过定期记录df命令的输出,可以分析磁盘空间的使用趋势,为容量规划提供数据支持。
需要注意的是,df命令显示的是文件系统的逻辑空间使用情况,而非物理磁盘的剩余空间,如果某个分区被大量小文件占用,即使这些文件已被删除,但由于文件系统碎片化或日志未同步,df命令可能不会立即释放空间,此时可能需要执行文件系统检查(如fsck)或同步操作(如sync)来确保数据一致性。
df命令是Unix系统管理中简单而强大的工具,通过灵活运用其选项和参数,可以高效地监控磁盘空间使用情况,及时发现并解决存储相关问题,无论是日常运维还是故障排查,掌握df命令的使用都是系统管理员的必备技能。
相关问答FAQs
Q1: 为什么磁盘空间显示仍有剩余,但无法创建新文件?
A: 这种情况通常是由于inode耗尽导致的,每个文件或目录都需要占用一个inode,即使文件内容很小也会占用一个inode,可以使用df -i
命令检查inode使用率,如果IUse%接近100%,需要清理小文件或临时文件以释放inode,文件系统的磁盘配额限制也可能导致此问题,可通过quota
命令检查。
Q2: 如何监控磁盘使用率并在超过阈值时自动告警?
A: 可以通过编写Shell脚本结合df命令实现,以下脚本会检查根分区的使用率,若超过80%则发送邮件告警:
#!/bin/bash THRESHOLD=80 USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//') if [ $USAGE -gt $THRESHOLD ]; then echo "磁盘使用率超过${THRESHOLD}%" | mail -s "磁盘空间告警" admin@example.com fi
将脚本加入cron定时任务(如每天执行一次),即可实现自动化监控,可根据需求调整阈值或告警方式(如短信、钉钉等)。