
給定一個包含單一文件的文件h
。如果我find
使用-ls
原語運行,我會得到以下輸出:
$ cat some_file
h
$ find . -ls
2750606 0 drwxr-xr-x 4 mbigras FOO\Domain Users 136 May 18 12:35 .
3067730 16 -rw-r--r-- 1 mbigras FOO\Domain Users 6148 May 18 12:33 ./.DS_Store
3067836 8 -rw-r--r-- 1 mbigras FOO\Domain Users 2 May 18 12:35 ./some_file
透過man find
搜尋-ls
我們可以發現輸出的是以下文件資訊:
它的 inode 號、以 512 位元組區塊為單位的大小、檔案權限、硬連結數、擁有者、群組、以位元組為單位的大小、上次修改時間和路徑名稱。
我想知道一些事情:
- 如果其中
some_file
只有h
一個位元組那麼為什麼“位元組大小”是2?我希望它是 1。 - 如果第二個數字是“512 位元組區塊的大小”,那麼為什麼它比“位元組大小”大?我預計它是 0 或至少更小。
答案1
some_file
containsh
後面跟著一個換行符,總共兩個位元組。嘗試類似的東西
hexdump -C some_file
逐字節查看文件的內容。
如果這是磁碟上的最小分配大小,則 1 到 512 位元組之間的任何檔案都將佔用一個 512 位元組區塊,就像 513 位元組檔案將佔用兩個 512 位元組區塊一樣。區塊計數不會向下捨去到最接近的整數。
答案2
看看背後的原因是什麼,為什麼我們使用 512 位元組;假設一個文件大小為 513 字節,那麼為了儲存該文件,我們需要在硬碟上使用 2 個大小為 512 位元組的區塊。為了保存第513個位元組,我們必須分配一個包含512個位元組的完整硬碟區塊。大小盡可能小,透過實驗我們發現512 位元組是最佳大小,如果減小它,則可能需要存取很多區塊才能存取文件,並且需要時間。因此,為了優化這些內容,他們透過實驗發現 512 位元組是更好的大小,以提高效率並減少記憶體浪費。