命令简介
df
是 Linux 中常用的命令,用于查看文件系统的磁盘空间使用情况。它显示了每个已挂载的文件系统的可用磁盘空间、已用磁盘空间以及其他相关信息。
命令格式
参数说明
参数 |
描述 |
备注 |
-a |
全部文件系统列表,包括系统特有的 /proc 等文件系统 |
- |
-h |
以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示 |
建议使用,方便阅读 |
-H |
以紧凑的指令列出指定文件时所在的文件系统 |
和文件相关 |
-i |
显示inode的信息 |
- |
-k |
以 KBytes 的容量显示现有磁盘的使用情况 |
- |
-l |
只显示本地文件系统 |
对于使用了网络共享的服务,比如 NFS,在查看挂载状态时,一定不能加该参数 |
-m |
以 MBytes 的容量显示现有磁盘的使用情况 |
- |
-P |
按分区uuid显示文件系统名称 (伴随 -o uuid 使用) |
0.5版本后可用 |
-t |
显示指定文件系统类型的磁盘使用情况 |
例如: -t ext4 |
-T |
显示文件系统类型 |
- |
-x |
不显示指定类型的文件系统 |
例如: -x tmpfs |
–no-sync |
忽略同步操作 |
提高命令执行效率 |
命令实例
基本使用
1.直接执行 df
命令:
1 2 3 4 5 6 7 8 9
| veazhi@vm002-ubuntu2204:~$ df Filesystem 1K-blocks Used Available Use% Mounted on tmpfs 400540 1180 399360 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 24590672 12648832 10667372 55% / tmpfs 2002696 0 2002696 0% /dev/shm tmpfs 5120 0 5120 0% /run/lock /dev/vda2 1992552 256816 1614496 14% /boot tmpfs 400536 4 400532 1% /run/user/1000 10.10.10.203:/data/nfs 24590848 9772544 13543936 42% /data/shared
|
参数 |
描述 |
备注 |
Filesystem |
表示该文件系统位于哪个分区,因此该列显示的是设备名称 |
- |
1K-blocks |
此列表示文件系统的总大小,默认以 KB 为单位 |
- |
Used |
表示用掉的硬盘空间大小 |
- |
Available |
表示剩余的硬盘空间大小 |
- |
Use% |
硬盘空间使用率。如果使用率高达 90% 以上,就需要额外注意,因为容量不足,会严重影响系统的正常运行 |
- |
Mounted on |
文件系统的挂载点,也就是硬盘挂载的目录位置 |
- |
2.人性化输出
1 2 3 4 5 6 7 8 9
| veazhi@vm002-ubuntu2204:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 392M 1.2M 390M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 24G 13G 11G 55% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda2 2.0G 251M 1.6G 14% /boot tmpfs 392M 4.0K 392M 1% /run/user/1000 10.10.10.203:/data/nfs 24G 9.4G 13G 42% /data/shared
|
3.指定文件系统类型
1 2 3 4 5 6 7 8 9 10 11 12
| veazhi@vm002-ubuntu2204:~$ df -t ext4 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv 24590672 12648832 10667372 55% / /dev/vda2 1992552 256816 1614496 14% /boot
veazhi@vm002-ubuntu2204:~$ df -x tmpfs Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv 24590672 12648832 10667372 55% / /dev/vda2 1992552 256816 1614496 14% /boot 10.10.10.203:/data/nfs 24590848 9772544 13543936 42% /data/shared
|
这里顺带提下参数 -l
。如果挂载了网络服务,比如 NFS,在使用 df
命令查看挂载时,一定不要加 -l
,而是直接使用 df -h
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| veazhi@vm002-ubuntu2204:~$ df -lh Filesystem Size Used Avail Use% Mounted on tmpfs 392M 1.2M 390M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 24G 13G 11G 55% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda2 2.0G 251M 1.6G 14% /boot tmpfs 392M 4.0K 392M 1% /run/user/1000
veazhi@vm002-ubuntu2204:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 392M 1.2M 390M 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 24G 13G 11G 55% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/vda2 2.0G 251M 1.6G 14% /boot tmpfs 392M 4.0K 392M 1% /run/user/1000 10.10.10.203:/data/nfs 24G 9.4G 13G 42% /data/shared
1.显示更多的特殊文件,参数 `-a` ,会将很多特殊的文件系统显示出来,这些文件系统包含的大多是系统数据,存在于内存中,不会占用硬盘空间,因此你会看到,它们所占据的硬盘总容量为 0。 ```bash veazhi@vm002-ubuntu2204:~$ df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on sysfs sysfs 0 0 0 - /sys proc proc 0 0 0 - /proc udev devtmpfs 1944756 0 1944756 0% /dev devpts devpts 0 0 0 - /dev/pts tmpfs tmpfs 400540 1180 399360 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv ext4 24590672 12648832 10667372 55% / ... ... ... ... ...
|
2.显示 inodes,参数 -i
,会将各个分区的 inodes 数打印出来
1 2 3 4 5 6 7 8 9
| veazhi@vm002-ubuntu2204:~$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on tmpfs 500674 774 499900 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 1572864 230122 1342742 15% / tmpfs 500674 1 500673 1% /dev/shm tmpfs 500674 3 500671 1% /run/lock /dev/vda2 131072 320 130752 1% /boot tmpfs 100134 25 100109 1% /run/user/1000 10.10.10.203:/data/nfs 1572864 175834 1397030 12% /data/shared
|
3.根据给出的文件或目录,自动分析出该文件或目录属于哪个分区:
1 2 3
| veazhi@vm002-ubuntu2204:~$ df -i /etc/passwd Filesystem Inodes IUsed IFree IUse% Mounted on /dev/mapper/ubuntu--vg-ubuntu--lv 1572864 230122 1342742 15% /
|
高级用法
1.定期监控磁盘使用情况
可以使用 watch
命令,定期执行 df
命令,监控磁盘使用变化。
每 5 秒钟执行一次 df -h
命令,实时查看磁盘使用情况。
2.排除特定分区
有时候,我们只关心某些重要分区的使用情况,可以结合管道和 grep
命令进行过滤。
只显示 /data
分区的使用情况。
3.磁盘使用报警
通过编写脚本,可以在磁盘使用率达到阈值时发出警报。例如:
1 2 3 4 5 6 7 8 9
| #!/bin/bash
usage=$(df -h / | awk '/\// {print $(NF-1)}' | sed 's/%//g')
if [ "$usage" -gt 90 ]; then echo "Warning: Root partition usage is ${usage}%" | mail -s "Disk Space Alert" [email protected] fi
|
这个脚本会检查根分区的使用率,如果超过 90%,就会通过邮件发送警报给管理员。
du命令和df命令的区别
有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。
而 du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。