1. df命令介绍

df命令的英文全称即“Disk Free”,主要用于显示操作系统的可用的磁盘空间。

一般情况下,默认单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。

日常工作中,主要用该命令查看磁盘被占用了多少空间、还剩多少空间等信息。

2. 语法格式及常用选项

依据惯例,我们还是先查看帮助,使用 df --help

[root@doc ~]# df --help

Linux基本功之df命令_centos

为了更直观一些,我们把查出来的参数用表格来展示:

参数

描述

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为单位

Linux基本功之df命令_文件系统_02

上述代码,执行df后显示的没一列的信息入下表:

列数

描述

第一列

代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)

第二列

给出分区包含的数据块(1024字节)的数目

第三列

已经使用的块数

第四列

还可以使用的块数

第五列

普通用户空间使用的百分比

第六列

Mounted on列表示文件系统的挂载点

这里需要注意的是:

第3,4列块数之和不等于第2列中的块数。

这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,让管理员仍能登录和留有解决问题所需的工作空间

3.2 用常见的格式显示出大小

所谓的常见格式指的是K,M, G 等单位。

这里用到-h参数,,–human-readable ,人类易读的信息

Linux基本功之df命令_文件系统_03

我们也经常用这个方法查看 光盘的挂载镜像位置和是否已经挂载,本文中是挂载到了/mnt

有的小伙伴会发现个问题,这里的大小好像并不等于磁盘总数, 这是因为: df -H 显示的时候,默认让1k等于1000字节,而不是1024字节,所以会有误差。

3.3 查看全部文件系统

此处使用-a 参数,列出包括BLOCK为0的文件系统

[root@doc ~]# df -a

Linux基本功之df命令_centos_04

说明:系统里面存在很多特殊的文件系统,这些比较特殊的文件系统几乎都是在内存当中,(如/proc挂载点),所以,这些特殊文件系统都不会占据硬盘空间。

3.4 显示指定文件所在分区的磁盘使用情况

此时可以直接在df后面跟上想要显示的文件分区名字

案例一: 展示/dev/sr0分区

df /dev/sr0

Linux基本功之df命令_centos_05

知道这个用法之后,我们在后面写脚本的时候,就多了一种截取思路。一旦发现某个磁盘使用率超过了指定值,就可以单独显示这个分区的情况,不至于受其他磁盘的干扰。

3.5 以inode模式来显示磁盘使用情况

这里我们用到-i参数,用于显示inode号:

[root@doc ~]# df -i

Linux基本功之df命令_文件系统_06

工作中有时候我们会遇到磁盘有空间,但显示磁盘不足,无法创建文件的情况,很大程度上是因为inode号不足了。 这时候就可以使用df -i查看inode是否有剩余。

如果要列出每个磁盘的inode情况,可以使用 -ai

[root@doc ~]# df -ai

Linux基本功之df命令_用户空间_07

3.6 输出每个文件系统的类型

-T参数可以输出文件系统的类型,这里可以使用df -T 参数

Linux基本功之df命令_centos_08

文件系统类型有: XFS, EXT系列,以及上面代码的iso9660和一些不常见的文件类型,比如tmpfs

3.7 指定单位大小显示:

此时可以用 --lock-size来指定大小,比如指定为1M ,就可以使用 block-size 1m

# 我们先来看不指定大小的情况
[root@mufenggrow ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   17G  4.4G   13G   26% /
devtmpfs                 894M     0  894M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M   19M  892M    3% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    182M  8.0K  182M    1% /run/user/42
tmpfs                    182M   56K  182M    1% /run/user/0
/dev/sr0                 4.3G  4.3G     0  100% /mnt
文件系统                1M-块  已用  可用 已用% 挂载点

# 再查看指定大小的情况
[root@mufenggrow ~]# df --block-size 1m
文件系统                1M-块  已用  可用 已用% 挂载点
/dev/mapper/centos-root 17394  4423 12972   26% /
devtmpfs                  894     0   894    0% /dev
tmpfs                     910     0   910    0% /dev/shm
tmpfs                     910    19   892    3% /run
tmpfs                     910     0   910    0% /sys/fs/cgroup
/dev/sda1                1014   179   836   18% /boot
tmpfs                     182     1   182    1% /run/user/42
tmpfs                     182     1   182    1% /run/user/0
/dev/sr0                 4376  4376     0  100% /mnt

你会发现,自己指定大小后,就不会出现 G和M单位混用了,而是全部都使用M来显示,统一了单位,我们写脚本的时候,就无需进行单位的换算了。

当然如果不关心磁盘使用量,只想看看磁盘的大小,可以使用lsblk命令

Linux基本功之df命令_centos_09