十.df
1.命令介绍
df命令的英文全称即“Disk Free”,主要用于显示操作系统的可用的磁盘空间。
一般情况下,默认单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常工作中,主要用该命令查看磁盘被占用了多少空间、还剩多少空间等信息。
依据惯例,我们还是先查看帮助,使用 df --help
用法:df [选项]... [文件]...
Show information about the file system on which each FILE resides,
or all file systems by default.
Mandatory arguments to long options are mandatory for short options too.
-a, --all include pseudo, duplicate, inaccessible file systems
-B, --block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'-BM' prints sizes in units of 1,048,576 bytes;
see SIZE format below
--direct show statistics for a file instead of mount point
--total produce a grand total
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
-i, --inodes 显示inode 信息而非块使用量
-k 即--block-size=1K
-l, --local 只显示本机的文件系统
--no-sync 取得使用量数据前不进行同步动作(默认)
--output[=FIELD_LIST] use the output format defined by FIELD_LIST,
or print all fields if FIELD_LIST is omitted.
-P, --portability use the POSIX output format
--sync invoke sync before getting usage info
-t, --type=TYPE limit listing to file systems of type TYPE
-T, --print-type print file system type
-x, --exclude-type=TYPE limit listing to file systems not of type TYPE
-v (ignored)
--help 显示此帮助信息并退出
--version 显示版本信息并退出
所显示的数值是来自 --block-size、DF_BLOCK_SIZE、BLOCK_SIZE
及 BLOCKSIZE 环境变量中第一个可用的 SIZE 单位。
否则,默认单位是 1024 字节(或是 512,若设定 POSIXLY_CORRECT 的话)。
SIZE is an integer and optional unit (example: 10M is 10*1024*1024). Units
are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ... (powers of 1000).
FIELD_LIST is a comma-separated list of columns to be included. Valid
field names are: 'source', 'fstype', 'itotal', 'iused', 'iavail', 'ipcent',
'size', 'used', 'avail', 'pcent', 'file' and 'target' (see info page).
2.常用选项
为了更直观一些,我们把查出来的参数用表格来展示:
| 参数 | 描述 |
|---|---|
| GNU 参数说明 | |
| -a, | 列出包括BLOCK为0的文件系统 |
| –block-size=SIZE | 指定块的大小 |
| -h,–huma-readable | 用常见的格式显示出大小(例如:1K 234M 2G) |
| -H,–si" | 同上,但是这里的1k等于1000字节而不是1024字节 |
| -i, --inodes | 用信息索引点代替块表示使用状况 |
| -k, --kilobytes | 指定块大小等于1024字节来显示使用状况 |
| -l, --local | 只显示本地文件系统使用状况 |
| -m, --megabytes | 以指定块大小等于1048576字节(1M)来显示使用状况 |
| -t, --type=TYPE | 只显示指定类型(TYPE)的文件系统 |
| -T, --print-type | 输出每个文件系统的类型 |
| -x, --exclude-type=TYPE | 只显示指定类型(TYPE)之外的文件系统. |
| –help | 输出该命令的帮助信息并退出 |
3.参考案例
3.1查看系统磁盘设备的信息
此时,无需加任何参数,默认是KB为单位
[root@klh ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 486752 0 486752 0% /dev
tmpfs 498976 0 498976 0% /dev/shm
tmpfs 498976 7728 491248 2% /run
tmpfs 498976 0 498976 0% /sys/fs/cgroup
/dev/mapper/centos-root 17811456 2395496 15415960 14% /
/dev/sda1 1038336 132380 905956 13% /boot
/dev/sr0 4364408 4364408 0 100% /media/cdrom
tmpfs 99796 0 99796 0% /run/user/0
[root@klh ~]#
上述代码,执行df后显示的没一列的信息入下表:
| 列数 | 描述 |
|---|---|
| 第一列 | 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区) |
| 第二列 | 给出分区包含的数据块(1024字节)的数目 |
| 第三列 | 已经使用的块数 |
| 第四列 | 还可以使用的块数 |
| 第五列 | 普通用户空间使用的百分比 |
| 第六列 | Mounted on列表示文件系统的挂载点 |
这里需要注意的是:
第3,4列块数之和不等于第2列中的块数。
这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,让管理员仍能登录和留有解决问题所需的工作空间
3.2用常见的格式显示出大小
所谓的常见格式指的是K,M, G 等单位。
这里用到-h参数,,–human-readable ,人类易读的信息
[root@klh ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.6M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.3G 15G 14% /
/dev/sda1 1014M 130M 885M 13% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/cdrom
tmpfs 98M 0 98M 0% /run/user/0
[root@klh ~]#
我们也经常用这个方法查看 光盘的挂载镜像位置和是否已经挂载,本文中是挂载到了/media/cdrom
有的小伙伴会发现个问题,这里的大小好像并不等于磁盘总数, 这是因为: df -H 显示的时候,默认让1k等于1000字节,而不是1024字节,所以会有误差。
3.3 查看全部文件系统
此处使用-a 参数,列出包括BLOCK为0的文件系统
[root@klh ~]# df -a
文件系统 1K-块 已用 可用 已用% 挂载点
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 486752 0 486752 0% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 498976 0 498976 0% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 498976 7728 491248 2% /run
tmpfs 498976 0 498976 0% /sys/fs/cgroup
cgroup 0 0 0 - /sys/fs/cgroup/systemd
pstore 0 0 0 - /sys/fs/pstore
cgroup 0 0 0 - /sys/fs/cgroup/blkio
cgroup 0 0 0 - /sys/fs/cgroup/pi
...
说明:系统里面存在很多特殊的文件系统,这些比较特殊的文件系统几乎都是在内存当中,(如/proc挂载点),所以,这些特殊文件系统都不会占据硬盘空间。
3.4显示指定文件所在分区的磁盘使用情况
此时可以直接在df后面跟上想要显示的文件分区名字
案例一: 展示/dev/sr0分区
[root@klh ~]# df /dev/sr0
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sr0 4364408 4364408 0 100% /media/cdrom
[root@klh ~]#
知道这个用法之后,我们在后面写脚本的时候,就多了一种截取思路。一旦发现某个磁盘使用率超过了指定值,就可以单独显示这个分区的情况,不至于受其他磁盘的干扰。
3.5以inode模式来显示磁盘使用情况
这里我们用到-i参数,用于显示inode号:
[root@klh ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 121688 342 121346 1% /dev
tmpfs 124744 1 124743 1% /dev/shm
tmpfs 124744 681 124063 1% /run
tmpfs 124744 16 124728 1% /sys/fs/cgroup
/dev/mapper/centos-root 8910848 29244 8881604 1% /
/dev/sda1 524288 326 523962 1% /boot
/dev/sr0 0 0 0 - /media/cdrom
tmpfs 124744 1 124743 1% /run/user/0
[root@klh ~]#
工作中有时候我们会遇到磁盘有空间,但显示磁盘不足,无法创建文件的情况,很大程度上是因为inode号不足了。 这时候就可以使用df -i查看inode是否有剩余。
如果要列出每个磁盘的inode情况,可以使用 -ai
[root@klh ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 121688 342 121346 1% /dev
tmpfs 124744 1 124743 1% /dev/shm
tmpfs 124744 681 124063 1% /run
tmpfs 124744 16 124728 1% /sys/fs/cgroup
/dev/mapper/centos-root 8910848 29244 8881604 1% /
/dev/sda1 524288 326 523962 1% /boot
/dev/sr0 0 0 0 - /media/cdrom
tmpfs 124744 1 124743 1% /run/user/0
[root@klh ~]# df -ai
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
sysfs 0 0 0 - /sys
proc 0 0 0 - /proc
devtmpfs 121688 342 121346 1% /dev
securityfs 0 0 0 - /sys/kernel/security
tmpfs 124744 1 124743 1% /dev/shm
devpts 0 0 0 - /dev/pts
tmpfs 124744 681 124063 1% /run
tmpfs 124744 16 124728 1% /sys/fs/cgroup
3.6输出每个文件系统的类型
-T参数可以输出文件系统的类型,这里可以使用df -T 参数
[root@klh ~]# df -T
文件系统 类型 1K-块 已用 可用 已用% 挂载点
devtmpfs devtmpfs 486752 0 486752 0% /dev
tmpfs tmpfs 498976 0 498976 0% /dev/shm
tmpfs tmpfs 498976 7728 491248 2% /run
tmpfs tmpfs 498976 0 498976 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17811456 2398744 15412712 14% /
/dev/sda1 xfs 1038336 132380 905956 13% /boot
/dev/sr0 iso9660 4364408 4364408 0 100% /media/cdrom
tmpfs tmpfs 99796 0 99796 0% /run/user/0
[root@klh ~]#
文件系统类型有: XFS, EXT系列,以及上面代码的iso9660和一些不常见的文件类型,比如tmpfs
3.7指定单位大小显示
此时可以用 --lock-size来指定大小,比如指定为1M ,就可以使用 block-size 1m
# 我们先来看不指定大小的情况
[root@klh ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.6M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 2.3G 15G 14% /
/dev/sda1 1014M 130M 885M 13% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/cdrom
tmpfs 98M 0 98M 0% /run/user/0
[root@klh ~]#
# 再查看指定大小的情况
[root@klh ~]# df --block-size 1m
文件系统 1M-块 已用 可用 已用% 挂载点
devtmpfs 476 0 476 0% /dev
tmpfs 488 0 488 0% /dev/shm
tmpfs 488 8 480 2% /run
tmpfs 488 0 488 0% /sys/fs/cgroup
/dev/mapper/centos-root 17394 2343 15052 14% /
/dev/sda1 1014 130 885 13% /boot
/dev/sr0 4263 4263 0 100% /media/cdrom
tmpfs 98 0 98 0% /run/user/0
[root@klh ~]#
你会发现,自己指定大小后,就不会出现 G和M单位混用了,而是全部都使用M来显示,统一了单位,我们写脚本的时候,就无需进行单位的换算了。
当然如果不关心磁盘使用量,只想看看磁盘的大小,可以使用lsblk命令
[root@klh ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.2G 0 rom /media/cdrom
[root@klh ~]#
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连~💕💕💕