软件测试学习 之Linux 疑问

ls -l显示的内容中total到底是什么?

man ls中的说明,我们可以看出total的意思为 “所列出内容的磁盘占用空间总和值。单位为kbytes",

ls -l列出的第5列数值是该文件或目录的大小。在这里目录的大小并非是目录所包含的文件的总大小。而仅仅是目录自身的大小。

而linux的数据存储是以block为单位的。

在顺序存储的情况下,一个块未被占满的情况下,后面的文件超出剩余块空间,将占用新的块存储,依次类推。

可以用以下方法查看系统中的block的大小,一般来说,ext3/ext4系统,block size是4096Byte,即4KB

tune2fs -l /dev/sda1|grep "Block size"

或者

getconf PAGESIZE

 以下是many3000在回答网友疑问的时候给予的回复,更便于理解上面的意思

1. filesystem 在格式化的時候就規範好了 block 的大小,在 ext2/ext3 的環境下,這個 block 不變; 
2. 每一個 block 僅能容納一個檔案,所以如果 block 大小為 4K ,而單一檔案只有 1K ,則會有 3K 的空間被浪費。而那個 total 會記錄的則是 4K 的容量; 


依據這個說明,來看看鳥哥的環境: 

代碼:
[vbird@linux wol]$ ls -ls
total 32
12 -rwxr-xr-x  1 vbird vbird 11120 Jul 28  2006 ether-wake
12 -rw-r--r--  1 vbird vbird 11107 Jul 28  2006 ether-wake.c
4 -rw-r--r--  1 vbird vbird    70 Jul 28  2006 Makefile
4 -rw-r--r--  1 vbird vbird    44 Jul 28  2006 wol.test.sh
注意了,鳥哥的 partition 使用的 Block 大小為 4K 的情況! 
所以每個檔案的說明如下: 
ether-wake 容量 11120 ,佔用 3 個 block ,所以總共耗去 12Kbytes 
ether-wake.c 容量 11107,佔用 3 個 block ,所以耗去 12Kbyes 
Makefile 容量 70 ,佔用 1 個 block ,所以耗去 4Kbytes 
wol.test.sh 容量 44 ,佔用 1 個 block ,所以耗去 4Kbytes , 
最後將這些資料總計一下,結果就得到 total 為 32 Kbytes 了。 
但檔案的總容量為: (11120+11107+70+44)/1024=11.067K, 
因此硬碟空間浪費多少? 32K-11.06K=20K 左右的空間。 

ls -ls filename将显示:

第一列显示的是占用的磁盘块数(不同于文件系统块数),每块大小为1K;且均为4的倍数,说明文件系统为每一个文档分配的文件块大小为4K(4096 bytes)

猜你喜欢

转载自blog.csdn.net/jian3x/article/details/88085223