Files
ls -l 和 du-sh 中的文件大小有什麼區別?
我有一個困擾我多年的最令人困惑的任務。ls -l 和 du -sh *.
GRILL:/user/MAIL/DATA>ll total 270 drwxr-xr-x 11 user users 1024 Mar 21 2013 . drwxr-xr-x 6 user users 96 May 28 2008 .. drwxr-xr-x 10 user users 1024 Jun 14 09:40 Rod drwxr-xr-x 3 user users 96 Sep 17 2010 Atlas drwxr-xr-x 2339 user users 132096 Jun 14 15:00 Admin drwxr-xr-x 3 user users 96 Jul 11 2014 DE drwxr-xr-x 5 user users 96 Jun 14 08:30 Express drwxr-xr-x 3 user users 96 Sep 17 2010 Deferred drwxr-xr-x 2 user users 96 Feb 10 2009 Imagi drwxr-xr-x 6 user users 1024 Jul 11 2014 NO drwxr-xr-x 3 user users 2048 Mar 21 2013 SE -rw-r--r-- 1 user users 55 Mar 21 2013 cmd GRILL:/user/MAIL/DATA>du -sk * 6723 Rod 0 Atlas 435494 Admin 2 DE 111273 Express 2 Deferred 0 Imagi 541 NO 12 SE 1 cmd
Admin 的大小
ls -l
是132096
,我嘗試從 Admin 目錄中刪除 400000+ 個文件,但我沒有發現空間減少了一點。而
du -sk
給出大小為435494
. 哪個是文件的原始大小,它們之間有什麼區別?有人可以詳細說明嗎?
對於文件,
ls -l file
顯示(除其他外)file
字節大小,同時du -k file
顯示磁碟佔用的空間file
(以 1 kB = 1024 字節為單位)。由於磁碟空間是以塊為單位分配的,由 指示的大小du -k
總是略大於由 指示的空間ls -kl
(與 相同ls -l
,但以 1 kB 為單位)。對於目錄,
ls -ld dir
顯示dir
. 這只是文件名列表,而不是文件或子目錄的內容。dir
因此,當您向其中添加文件時(即使文件為空),此大小會增加,但當其中一個文件dir
增長時,它會保持不變。但是,當您
dir
從列表中的空間中刪除文件時,不會立即回收,而是將已刪除文件的條目標記為未使用,然後再回收(這實際上取決於實現,但我所描述的幾乎是通用的這些天的行為)。這就是為什麼您在ls -ld
刪除文件時可能看不到任何輸出變化的原因,直到很久以後(如果有的話)。最後,
du -ks dir
顯示(估計) 中的所有文件dir
以及所有dir
子目錄中的所有文件在磁碟上佔用的空間,以 1 kB = 1024 字節為單位。考慮到上面的描述,這與 的輸出沒有任何關係ls -kld dir
。