Linux
EXT3:如果塊大小為 4K,為什麼 ls -l 顯示低於該大小的文件大小?
如果您對包含一個字母的文件執行 ls -l,它將列出大小為 2B。如果您的文件系統是 4k 塊,我認為它會將文件四捨五入到塊大小?是因為 ls -l 實際上是從 inode 讀取字節數嗎?在什麼情況下,您會在 Linux 2.6 Kernel GNU utils 中四捨五入以阻止答案與實際字節數答案?
我猜你用
echo a > file
or將那個字母放入文件中vim file
,這意味著你將在其中包含那個字母和一個額外的換行符(兩個字元,因此兩個字節)。ls -l
以字節顯示文件大小,而不是塊(更具體地說:文件長度):$ echo a > testfile $ ls -l testfile -rw-r--r-- 1 user user 2 Apr 28 22:08 testfile $ cat -A testfile a$
(注意將
cat -A
換行符顯示為$
字元)與 相比
ls -l
,du
將顯示磁碟上實際佔用的大小:$ du testfile 4
(實際上,
du
以 1kiB 為單位顯示大小,所以這裡的大小是 4×1024 字節 = 4096 字節 = 4 kiB,這是這個文件系統上的塊大小)要
ls
顯示這一點,您必須使用該-s
選項而不是/除了-l
:$ ls -ls testfile 4 -rw-r--r-- 1 user user 2 Apr 28 22:08 testfile
第一列是分配的大小,同樣以 1kiB 為單位。Last 可以通過指定來改變
--block-size
,例如$ ls -ls --block-size=1 testfile 4096 -rw-r--r-- 1 aw aw 2 Apr 28 22:08 testfile