当在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是怎么来的,也就是模拟乘客乘坐电梯的过程。
第一趟:
- 第一个名为 . 的乘客,体重是134b,他进去电梯后,电梯不超重,继续进人;
- 第二个名为 .. 的乘客,体重是59b,进去后,依旧不超重,继续进人;
- 第三个名为 .git 的乘客,体重是4096,进去后,电梯报警超重,所以他退出电梯。
因为规定了乘客的顺序不能改变,所以当3号退出电梯后,虽然电梯还有很多空余空间,但是也不允许让3号身后的人进电梯,所以第一趟电梯,只载了1和2两个人。
第二趟:
3号的体重是4096,刚好达到电梯城中上限,故,第二趟只栽了3号。
第三趟:
- 第四位乘客叫 .gitignore,他的体重是1374,进去电梯后,电梯仍有空余承重;
- 名为info的5号乘客,体重是2710,当他进去后,电梯也未报警,此时,电梯已承载1374+2710=4084。
- 第六位乘客名为plateform,体重为18b,当他进去后,电梯承载的重量达到4102,超载,故6号退出。
因此第三趟电梯载了4号和5号两个人。
第四趟:
同上方法,可以得到,第四趟载了6,7,8三个人。
第五趟:
同第二趟一样,刚好第五趟载了一个人就满载了。
综上,电梯一共运输5趟,我们已经知道电梯每趟的承重能力大小是4K,故5趟的总承重能力是4K*5=20K。我们可以把载重能力看成一种资源,而total的意思是:列表中所有文件的磁盘空间占用总和,也就是资源占用总和,它的统计单位是kb。
因而,这也就是total后的20(Kb)的来历。