linux中,ls -l命令显示的total的含义。

当在linux里使用ll或者ls -l命令查看文件详情时,会在第一行看到如下的字样: 

total 20 
drwxr-xr-x 8 user rnd 134 Apr 27 04:40 ./ 
drwxr-xr-x 6 user rnd 59 Apr 27 07:56 ../ 
drwxr-xr-x 8 user rnd 4096 May 3 08:13 .git/ 
-rw-r--r-- 1 user rnd 1374 Apr 27 04:40 .gitignore 
-rw-r--r-- 1 user rnd 2710 Apr 27 04:40 info 
drwxr-xr-x 3 user rnd 18 Apr 27 04:40 platform/ 
-rw-r--r-- 1 user rnd 163 Apr 27 04:40 project 
drwxr-xr-x 4 user rnd 30 Apr 27 04:40 testsupport/ 
drwxr-xr-x 7 user rnd 4096 Apr 27 04:40 utils/

那么total后的20是什么意思呢?

首先要了解一个数据块(Block)的概念,linux的数据存储是以block为单位的。块,可以理解为一个固定的容器,或者形象点,理解为我们日常生活中要乘坐的电梯,电梯的承重大小就是Block的大小。此时,我们把当前目录的文件(包含文件夹,注意linux下一切皆文件的概念) 想象成有序乘坐电梯,但是体重不同的人。

接下来,首先要查询当前电梯的承重能力,我们可以使用下面的命令查询:

$ getconf PAGESIZE

我的系统得到的数值是4096,也就是4K。 
所以我们的电梯承重是4096,接下来,我们开始看total的20是怎么来的,也就是模拟乘客乘坐电梯的过程。 
第一趟:

1 第一个名为 . 的乘客,体重是134b,他进去电梯后,电梯不超重,继续进人;
2 第二个名为 .. 的乘客,体重是59b,进去后,依旧不超重,继续进人;
3 第三个名为 .git 的乘客,体重是4096,进去后,电梯报警超重,所以他退出电梯。

因为规定了乘客的顺序不能改变,所以当3号退出电梯后,虽然电梯还有很多空余空间,但是也不允许让3号身后的人进电梯,所以第一趟电梯,只载了1和2两个人。 
第二趟:

3号的体重是4096,刚好达到电梯城中上限,故,第二趟只栽了3号。

第三趟:

1 第四位乘客叫 .gitignore,他的体重是1374,进去电梯后,电梯仍有空余承重;
2 名为info的5号乘客,体重是2710,当他进去后,电梯也未报警,此时,电梯已承载1374+2710=4084。
3 第六位乘客名为plateform,体重为18b,当他进去后,电梯承载的重量达到4102,超载,故6号退出。

因此第三趟电梯载了4号和5号两个人。 
第四趟:

同上方法,可以得到,第四趟载了6,7,8三个人。

第五趟:

同第二趟一样,刚好第五趟载了一个人就满载了。

综上,电梯一共运输5趟,我们已经知道电梯每趟的承重能力大小是4K,故5趟的总承重能力是4K*5=20K。我们可以把载重能力看成一种资源,而total的意思是:列表中所有文件的磁盘空间占用总和,也就是资源占用总和,它的统计单位是kb。 
因而,这也就是total后的20(Kb)的来历。

上一篇:element ui动态增减表单项目验证问题及实现


下一篇:竞赛试题数据生成器制作