相关文章
Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html
一、df
该指令能够列出文件系统的整体磁盘使用量。
用法:df [-ahikHTm] [dirname/filename]
-a:列出所有的文件系统,包括系统特有的/proc等文件系统(注:此选项只有在未指定dirname/filename时有效)。
-k:以KBytes的单位显示文件系统容量。
-m:以MBytes的单位显示文件系统容量。
-h:由系统自行决定以GBytes、MBytes、KBytes等格式显示文件系统容量。
-H:以M=1000K代替M=1024K的进位方式。
-T:同时列出文件系统类型。
-i:不用存储容量而用inode的数量来显示。
示例如下
文件系统:表示文件系统所在设备名称。
1K-块:表示单位是1KByte。可以使用-m来改变单位。
已用、可用:表示已使用和剩下的文件系统空间。
挂载点:表示这个设备的文件系统挂载到了哪个目录。
如果df后面如果加了文件名或目录名,df会自动分析该文件或目录所在的文件系统,并只列出这个文件系统的信息。
我们会发现inode的已用比例和存储空间相比是比较小的。这是因为一个inode可以对应属于一个文件的多个区块。如果我们创建很多小文件,那么inode已用比例就会升高。
由于df主要读取的数据是针对整个文件系统的,读取的范围主要是在超级区块的信息,所以这个命令显示结果的速度非常快。
另外需要注意的是,如果使用-a这个参数,系统会出现/proc这个挂载点,但是文件系统的占用空间为0。/proc里面的东西都是Linux系统所需要加载的系统数据,而且是保存在内存中,所以没有占用磁盘存储空间。
至于/etc/shm/挂载点,其实是挂载了利用内存虚拟出来的磁盘空间,通常是总物理内存的一半。在这个目录下建立的任何数据文件,其访问速度是非常快的。不过,由于是通过内存模拟出来的,这个文件系统的大小不定,并且建立的数据文件在关机后就会消失(因为保存在内存中)。
二、du
该指令能够列出文件或目录在文件系统中占用的存储空间(默认是以逻辑块的形式,且在统计目录占用空间时,和ls命令不同,有-b选项的du命令除了统计文件名和inode占用空间外,还会包括目录内文件的真实占用空间,没有-b选项的du不统计目录的文件名和inode逻辑块占用空间)。
用法:du [-ahskm] [dirname/filename]
-a:列出目录下的文件、子目录、子目录的子目录和文件....(即所有目录和文件)的逻辑块占用空间,不加-a时默认只显示目录、子目录...。
-h:由系统自行决定以G、M、K等格式显示逻辑块占用空间。
-s:只列出目录的逻辑块占用空间,而不递归列出目录下所有目录和文件的逻辑块占用空间(默认是递归的)所以这个选项和-a不能同时使用,注意这不代表不统计目录下所有目录和文件的逻辑块占用,下面的-S才表示不统计子目录的。
-S:统计一个目录占用空间时,不统计其子目录的逻辑块占用空间,只统计目录下的文件占用空间。
-k:以KBytes列出逻辑块占用空间。
-m:以MBytes列出逻辑块占用空间。
-b:以Byte显示出真实占用空间(不是以逻辑块为单位)
示例如下
首先我们创建了一个空的目录test,ls显示该空目录占用6Byte,我们再创建一个短文本文件,占用5Byte,而目录大小变为18Byte,这里是因为新增了文件名file和其对应的inode号,而他们占用了12Byte所致,这里的所说的都是实际占用。
接着du命令显示该目录占用4KBytes(一个逻辑块),du命令并不会统计目录内文件名和inode号所占用的逻辑块(创建一个目录至少会给一个逻辑块存储文件名和inode号),只会统计目录内文件占用的逻辑块大小(意思是一个du一个空目录,显示逻辑块占用为0,但使用ls或者在后面加上-b后,就能看到空目录占用的真实空间)。加上了-b选项后,才能以Byte为单位显示真实大小,此时才会另外统计目录内文件名和inode号所占用的真实空间。目录的总大小23Bytes包括了文件真实空间大小5Bytes和文件内的文件名和inode号所占用的真实空间大小18Bytes(这点在ls的输出可以看到)。
建议自己多在系统中尝试实践,才能理解这个命令的正确使用方式。