作者 主題: stat 內容的疑問  (閱讀 2400 次)

0 會員 與 1 訪客 正在閱讀本文。

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
stat 內容的疑問
« 於: 2007-06-26 08:54 »
代碼: [選擇]
# du /etc/fstab
4       /etc/fstab
# stat /etc/fstab
  File: `/etc/fstab'
  Size: 992             Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d      Inode: 290168      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-06-26 08:27:08.000000000 +0800
Modify: 2007-06-19 17:36:25.000000000 +0800
Change: 2007-06-19 17:36:25.000000000 +0800


想請問一下,當使用 du 去查 fstab 佔用空間時,顯示為 4 k,但用 stat 指令
去觀察時,為何 blocks 處顯示的是 8k 而不是 4k 呢?

bono

  • 榮譽學長
  • 活潑的大學生
  • ***
  • 文章數: 363
  • 性別: 男
    • 檢視個人資料
Re: stat 內容的疑問
« 回覆 #1 於: 2007-06-27 00:13 »
引述: "ohmygod"
[code]# du /etc/fstab
4       /etc/fstab
# stat /etc/fstab
  File: `/etc/fstab'
  Size: 992             Blocks: 8          IO Block: 4096  
想請問一下,當使用 du 去查 fstab 佔用空間時,顯示為 4 k,但用 stat 指令
去觀察時,為何 blocks 處顯示的是 8k 而不是 4k 呢?
/___/_/___/_/___/_/___/_/___/_/___/

-=-  Bono   -=-  MCSE & LPIC Tutor -=-
_/___/_/___/_/___/_/___/_/___/_/___/

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
stat 內容的疑問
« 回覆 #2 於: 2007-06-27 08:41 »
你指的那個 I/O block 應該不是指檔案所佔用的空間:
代碼: [選擇]
# ls -l /etc/termcap
-rw-r--r-- 1 root root  807103  Jul 13  2006 /etc/termcap

# stat /etc/termcap
  File: `/etc/termcap'
  Size: 807103          Blocks: 1600       IO Block: 4096  regular file
Device: 805h/2053d      Inode: 288048      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2007-06-27 08:25:01.000000000 +0800
Modify: 2006-07-13 09:18:39.000000000 +0800
Change: 2007-04-29 23:29:03.000000000 +0800

ohmygod

  • 活潑的大學生
  • ***
  • 文章數: 210
    • 檢視個人資料
stat 內容的疑問
« 回覆 #3 於: 2007-06-27 13:56 »
自問自答一下,看了man stat 後,應該是這樣:
# stat -c %B /etc/passwd
512

%B是表示每個區塊大小是多少bytes。而它計算區塊的單位是512 bytes,
又 /etc/passwd 會用掉一個資料區塊4096bytes,因此Blocks 那個欄位才會
顯示 8,表示512*8=4096。

# stat -c %b /etc/passwd
8
%b 是表示分配的區塊數是多少,也就是 Blocks 欄位顯示的那個數字。

所以 Blocks 所顯示的數字是表示用了幾個 512 bytes 的 block,不是代表幾KB。