Linux命令之df

df命令与du命令极其相似,只不过前者用来显示整个系统的磁盘使用情况,而后者更侧重某个具体的文件或目录。它们的选项也是类似的,比如-a -B -h -k。先看一个例子:

m@sys:~/blog$ df
文件系统       1K-blocks     已用      可用 已用% 挂载点
/dev/sda1      249893748  7631632 229545216    4% /
none                   4        0         4    0% /sys/fs/cgroup
udev             2007232        4   2007228    1% /dev
tmpfs             403372     1388    401984    1% /run
none                5120        0      5120    0% /run/lock
none             2016840    12320   2004520    1% /run/shm
none              102400      200    102200    1% /run/user
/dev/sda5      211338616 39504140 161075976   20% /home
/dev/sda7        4672640   213176   4199064    5% /boot

df后面不加任何参数的情况下,默认把所有的在磁盘上存在的文件系统列出来。注意,还有一些文件系统是所谓的虚拟文件系统,它们并不使用磁盘上的空间,而是驻留在内存中。
观察输出的信息,分为5列:第一列是代表文件系统对应的设备文件的路径名(以/dev开头的是硬盘上的分区,类似与windows下的盘符,其他的我们先不深究);第二、三、四列分别以1K为单位显示出文件系统的总大小、已使用的大小和未使用的大小;第五列为未使用空间所占比例;第六列是挂载点。
我们发现,第3,4列块数之和不等于第2列中的块数。这是因为缺省的每个分区都留了少量空间供系统管理员使用。即使遇到普通用户空间已满的情况,管理员仍能登录和留有解决问题所需的工作空间。


下面就是各个选项:

  • -a:显示包括驻留在内存中的文件系统
m@sys:~$ df -a
文件系统       1K-blocks     已用      可用 已用% 挂载点
/dev/sda1      249893748  7631636 229545212    4% /
proc                   0        0         0     - /proc
sysfs                  0        0         0     - /sys
none                   4        0         4    0% /sys/fs/cgroup
none                   0        0         0     - /sys/fs/fuse/connections
none                   0        0         0     - /sys/kernel/debug
none                   0        0         0     - /sys/kernel/security
udev             2007232        4   2007228    1% /dev
devpts                 0        0         0     - /dev/pts
tmpfs             403372     1332    402040    1% /run
none                5120        0      5120    0% /run/lock
none             2016840    16040   2000800    1% /run/shm
none              102400       44    102356    1% /run/user
none                   0        0         0     - /sys/fs/pstore
/dev/sda5      211338616 39501184 161078932   20% /home
/dev/sda7        4672640   213176   4199064    5% /boot
binfmt_misc            0        0         0     - /proc/sys/fs/binfmt_misc
systemd                0        0         0     - /sys/fs/cgroup/systemd
gvfsd-fuse             0        0         0     - /run/user/1000/gvfs

可以看到,多出来的那部分文件系统其第二列都是0,即不占用磁盘空间。

  • -T:显示文件系统类型
m@sys:~$ df -T
文件系统       类型     1K-blocks     已用      可用 已用% 挂载点
/dev/sda1      ext4     249893748  7631636 229545212    4% /
none           tmpfs            4        0         4    0% /sys/fs/cgroup
udev           devtmpfs   2007232        4   2007228    1% /dev
tmpfs          tmpfs       403372     1332    402040    1% /run
none           tmpfs         5120        0      5120    0% /run/lock
none           tmpfs      2016840    16040   2000800    1% /run/shm
none           tmpfs       102400       44    102356    1% /run/user
/dev/sda5      ext4     211338616 39501180 161078936   20% /home
/dev/sda7      ext4       4672640   213176   4199064    5% /boot

我们可以看到,那些比较奇怪的文件系统,其类型大多是tmpfs。

  • -h:以人类可读的方式显示大小
m@sys:~$ df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1       239G  7.3G  219G    4% /
none            4.0K     0  4.0K    0% /sys/fs/cgroup
udev            2.0G  4.0K  2.0G    1% /dev
tmpfs           394M  1.4M  393M    1% /run
none            5.0M     0  5.0M    0% /run/lock
none            2.0G   16M  2.0G    1% /run/shm
none            100M   44K  100M    1% /run/user
/dev/sda5       202G   38G  154G   20% /home
/dev/sda7       4.5G  209M  4.1G    5% /boot

这下终于明白了-h的具体含义:不足1K的,直接显示字节数,没有单位;不足1M的,以K为单位;不足1G的,以M为单位…以此类推。

  • -H:容量单位切换为工业标准,即1KB=1000Bytes,1M=1000KB等等
m@sys:~/program/C_codes$ df -H
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1       256G  7.9G  236G    4% /
none            4.1k     0  4.1k    0% /sys/fs/cgroup
udev            2.1G  4.1k  2.1G    1% /dev
tmpfs           414M  1.4M  412M    1% /run
none            5.3M     0  5.3M    0% /run/lock
none            2.1G   17M  2.1G    1% /run/shm
none            105M   46k  105M    1% /run/user
/dev/sda5       217G   41G  165G   20% /home
/dev/sda7       4.8G  219M  4.3G    5% /boot
  • -i:显示inode的使用情况,而非容量
m@sys:~/program/C_codes$ df -i
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda1      15876096  423503 15452593       3% /
none             213796       2   213794       1% /sys/fs/cgroup
udev             208992     511   208481       1% /dev
tmpfs            213796     534   213262       1% /run
none             213796       5   213791       1% /run/lock
none             213796      67   213729       1% /run/shm
none             213796      27   213769       1% /run/user
/dev/sda5      13434880  120394 13314486       1% /home
/dev/sda7        305216     333   304883       1% /boot

当你监视磁盘使用情况时,你必须注意的不仅仅是磁盘空间还有“inode”的使用情况。在Linux中,inode是用来存储特定文件的元数据的一种数据结构,在创建一个文件系统时,inode的预先定义数量将被分配。这意味着,一个文件系统可能耗尽空间不只是因为大文件用完了所有可用空间,也可能是因为很多小文件用完了所有可能的inode。

  • –total:显示磁盘总利用率
m@sys:~/program/C_codes$ df -h --total
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1       239G  7.3G  219G    4% /
none            4.0K     0  4.0K    0% /sys/fs/cgroup
udev            2.0G  4.0K  2.0G    1% /dev
tmpfs           394M  1.4M  393M    1% /run
none            5.0M     0  5.0M    0% /run/lock
none            2.0G   17M  2.0G    1% /run/shm
none            100M   44K  100M    1% /run/user
/dev/sda5       202G   38G  154G   20% /home
/dev/sda7       4.5G  209M  4.1G    5% /boot
total           449G   46G  381G   11% -
  • -k、-m:-k其实是df默认的选项,而-m就是以1M为单位显示容量。
  • -B:更改更具体的显示单位,比如-B 2K,-B 3MB等,和在du中用法相同。

完。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。