1. 程式人生 > >linux中,ls -l命令顯示的total的含義。

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)的來歷。