一、命令介绍
1、du(disk usage):该命令可以计算文件或目录所占的磁盘空间(所占的block的大小的总和)。注意:是所占的磁盘空间情况哦,并不是实际内容大小。
二、磁盘空间占用情况的计算方式
1、因为该命令查看的文件或目录所占磁盘空间是与block大小有关的,所以先查看我的系统的/boot所挂载的分区的文件系统的block大小,如下图,该文件系统使用的block大小为1k。
2、查看文件
在/boot目录下新建一个目录testdu,然后在该目录下用touch命令新建一个a.txt的空文件。并使用“du a.txt”命令查看该文件所占的磁盘空间情况,如下图,由于a.txt文件是空文件,实际内容大小为0,所以不占用任何的block,只占用一个inode,由文件系统的知识可以知道inode也是与block有关的,所以一个inode也占用一个block,所以该文件可以说是占用了1个block,由于上图显示的该文件系统的block大小为1KB,所以使用du命令查看该文件的磁盘占用情况时显示的大小为1,也就是1KB。
如果给该a.txt文件随便写上一点内容,让它不为空,再来看看该文件的磁盘占用情况是如何呢?如下图:此时,该文件的内容不为空,内容大小为4byte,所以它占用了一个inode和一个block,可以看成是共2个block,所以使用du命令查看该文件的磁盘占用情况时显示的是2KB。
如果再继续给该文件写上一些内容,让它占用2个block呢?要让该文件占用2个block,就得让文件内容大小大于文件系统block的大小。如下图:由于现在该文件内容的大小为1083byte,已经大于该文件系统一个block的大小,所以该文件会占用1个inode和2个block,可以看成是共3个block,所以使用du命令查看时显示的磁盘占用情况是3KB。
3、查看目录
由于新建一个目录时,会占用一个inode和至少一个block,所以新建目录本身占用的磁盘情况就是2个block,所以当上面我们新建testdu目录时,该目录就占用磁盘空间情况就是2KB了,在加上上面的a.txt文件现在的占用的磁盘空间情况是3KB,所以testdu目录的磁盘占用情况就是5KB,如下图:
三、命令的常用选项
1、直接输入du没有加任何选项时,则会分析目前所在目录的文件与目录(包括子目录)所占用的磁盘空间,但是在显示时只会显示出目录(包括子目录)的磁盘占用空间,为了演示这个例子,我们在上面的testdu目录下在新建一个dir01的空目录,如下图:新建的dir01目录只占用一个inode和一个block,所以占用的磁盘空间是2KB,而上面已经测试过a.txt文件占用的磁盘空间是3KB,testdu目录本身还占用2KB,所以现在的testdu(也就是".")的磁盘空间占用是7KB,图中仅仅显示出了目录的磁盘占用情况,文件a.txt的占用情况并没有显示出来,所以testdu目录中全部子目录占用的磁盘空间相加并不会等于testdu(".")的磁盘占用空间。
2、如果要连子目录的占用的磁盘空间也不显示出来,仅仅显示该目录的占用空间的总量而已,可以使用-s选项,如下图:
3、如果要在使用du命令时把文件的磁盘占用空间也显示出来,那么可以使用-a的选项,如下图:testdu目录中所有文件与目录磁盘占用空间相加还是不等于“.”的占用空间,因为testdu目录本身还占用2KB嘛。
3、通过以上的测试,可以发现-s和-a选项是不能同时使用的,如下图:因为一个要显示,而另一个却不显示。
4、通过以上测试,我们发现在显示testdu占用的磁盘空间时,包括了子目录的磁盘占用空间大小,而如果需要不包括子目录占用的磁盘空间时,可以使用“-S(大写)”选项,如下图:“.”占用的磁盘空间仅仅包括自身的2KB和a.txt文件的3KB,而不包括子目录dir01的2KB。
5、-h能够自动区分以较易阅读的占用的磁盘空间格式来显示(默认是KB),如下图:
6、使用“*”通配符,如下图: