1.磁盘与目录的容量
现在我们知道磁盘的整体数据是在超级区块中,但是每个文件的容量则在inode 当中记载。
那在命令行模式下面该如何显示这几个数据?下面就让我们来谈一谈这两个命令:
- df:列出文件系统的整体磁盘使用量;
- du:查看文件系统的磁盘使用量(常用在查看目录所占磁盘空间);
1.1.df
选项与参数:
- -a:列出所有的文件系统,包括系统特有的/proc等文件系统;
- -k:以KBytes的容量显示各文件系统;
- -m:以MBytes的容量显示各文件系统;
- -h:以人们较易阅读的GBytes、Mbytes、KBytes等格式自行显示
- -H:以 M=1000K替换 M=1024K的进位方式;
- -T:连同该硬盘分区的文件系统名称(例如xfs)也列出;
- -i:不用磁盘容量,而以inode 的数量来显示;
范例一:将系统内所有的文件系全列出来。
在 linux 不面如果 df 没有加任何选项,那么默认会将系统内所有的(不含特殊的内存内的文件系统与swap)都以1KBytes 的容量来列出来,至于那个/dev/shm是与内存有关的挂载,
先来说明一下范例一所输出的结果信息为:
- Filesystem:代表该文件系统是在哪个硬盘分区,所以列出设备名称;
- 1k-blocks:说明下面的数字单位是1KB,可利用-h或-m来改变容量;
- Used:顾名思义,就是使用掉的磁盘空间;
- Available:也就是剩下的磁盘空间大小;
- Use%:就是磁盘的使用率,如果使用率高达90%以上,最好需要注意一下,免得容量不足造成系统问题,例如最容易被占满的/var/spool/mail这个保存邮件的目录;
- Mounted on:就是磁盘的挂载目录。(挂载点)
范例二:将容量结果以易读的格式显示出来
不同于范例一这里会以G/M等容量格式显示出来,比较容易看
范例三:将系统内的所有特殊文件格式及名称都列出来
这里只截取了一小部分
- /boot系统里面其实还有很多特殊的文件系统存在。
- 那些比较特殊的文件系统几乎都是在内存当中,例如/proc这个挂载点
- 因此,这些特殊的文件系统都不会占据磁盘空间。
范例四:将/etc下面的可用的磁盘容量以易读的容量格式显示。
这个范例比较有趣一点,在df后面加上目录或是文件时,df会自动的分析该目录或文件所在的硬盘分区,并将该硬盘分区的容量显示出来,所以,您就可以知道某个目录下面还有多少容量可以使用了。
范例五:将目前各个硬盘分区可用的inode数量列出。
这个范例则主要列出可用的inode剩余量与总容量。分析一下与范例一的关系,你可以清楚地发现到,通常inode的剩余数量都比区块还要多。
由于df主要读取的数据几乎都是针对一整个文件系统,因此读取的范围主要是在超级区块内的信息,所以这个命令显示结果的速度非常快。
在显示的结果中你需要特别留意的是根目录(/)的剩余容量。因为我们所有的数据都是由根目录衍生出来的,因此当根目录的剩余容量剩下0时,你的Linux可能就问题很大了。
另外需要注意的是,如果使用-a这个参数时,系统出现/proc这个挂载点,但是里面的东西都是0,不要紧张。/proc的东西都是Linux系统所需要加载的系统数据,而且是挂载在内存当中,所以当然没有占任何的磁盘空间。
至于那个/dev/shm/目录,其实是利用内存虚拟出来的磁盘空间,通常是总物理内存的一半。由于是通过内存模拟出来的磁盘,因此你在这个目录下面建立任何数据文件时,访问速度是非常快的。(在内存中工作。)不过,也由于它是内存模拟出来的,因此这个文件系统的大小在每台主机上都不样,而且建立的东西在下次启动时就会消失,因为是在内存中嘛。
1.2.du
[root@study~]# du [-ahskm]文件或目录名称
选项与参数:
- -a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量;
- -h;以人们较易读的容量格式(G/M)显示;
- -s;仅列出总量,而不列出每个各别的目录占用容量;
- -S:不包括子目录下的总计,与-s 有点差别;
- -k:以KBytes列出容量显示;
- -m;以MBytes列出容量显示;
范例一,列出当前目录下的所有文件容量
直接输入du没有加任何选项时,则du会分析【目前所在目录】的文件与目录所占用的磁盘空间。
但是,实际显示时,仅会显示目录容量(不含文件),因此(.)目录有很多文件没有被列出来,所以全部的目录相加不会等于(.)的容量,此外,输出的数值数据为 1K大小的容量单位。
范例二:同范例一,但是将文件的容量也列出来。
范例三:检查根目录下面每个目录所占用的容量
这是个经常被使用的功能,利用通配符*来代表每个目录,如果想要检查某个目录下,哪个子目录占用最大的容量,可以用这个方法找出来。
值得注意的是,如果刚刚安装好Linux时,那么整个系统容量最大的应该是/usr。
而/proc虽然有列出容量,但是它的容量是在内存中, 不占磁盘空间。至于/proc 里面会列出一堆【No such file or directory】的错误,别担心,因为是内存中的程序,程序执行结束就会消失,因此会有些目录找不到是正确的.
与df不一样的是,du 这个命令其实会直接到文件系统内去查找所有的文件数据,所以上述第三个范例命令的运行会执行一小段时间。
此外,在默认的情况下,容量的输出是以KB 为单位,如果你想要知道目录占了多少MB,那么就使用-m 这个参数即可。如果你只想要知道该目录占了多少容量的话,使用-S就可以。
至于-S 这个选项部分,由于du 默认会将所有文件的大小均列出,因此假设你在/etc下面使用du时,所有的文件大小,包括/etc 下面的子目录容量也会被计算一次。然后最终的容量(/etc)也会相加一次,因此很多朋友都会误会du分析的结果不太对劲,
所以,如果想要列出某目录下的全部数据,或许也可以加上-S的选项,减少子目录的相加。