1. 程式人生 > >linux stat命令、inode內容--ctime,mtime,atime的區別

linux stat命令、inode內容--ctime,mtime,atime的區別

1、[[email protected] tmp]# stat 1.txt 
  File: `1.txt'
  Size: 8               Blocks: 8          IO Block: 4096   regular file
Device: 802h/2050d      Inode: 196617      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-10-20 21:43:54.000000000 +0800
Modify: 2013-10-20 21:35:42.000000000 +0800
Change: 2013-10-20 21:35:42.000000000 +0800


2、stat顯示出inode的內容--inode包含檔案的元資訊,具體來說有以下內容:
  * 檔案的位元組數
  * 檔案擁有者的User ID
  * 檔案的Group ID
  * 檔案的讀、寫、執行許可權
  * 檔案的時間戳,共有三個
  * 連結數,即有多少檔名指向這個inode
  * 檔案資料block的位置


3、IO Block:邏輯塊的大小為4096個位元組
    Blocks:物理最小塊是512,而IO Block為4096,所以這裡就佔用了8個物理塊的意思
    Access:atime
    Modify:mtime,修改時間,注意這個不是建立時間,m不是make的意思
    Change:ctime,改變時間


4、通過ls怎麼查詢這三個時間?
    ls -lc filename         列出檔案的 ctime
    ls -lu filename         列出檔案的 atime
    ls -l filename          列出檔案的 mtime --ll預設顯示的就是這個時間


5、這三個時間不好區別,但必須區別好,因為很多應用會考慮到這些時間,比如在做同步備份時,會判斷時間,大於上次備份時間的檔案要再次同步等,或在查詢檔案何時變化,何時被黑客入侵,都會用到這個。
    atime:訪問時間,讀取檔案或者執行檔案時會更改,命令如cat,vi
    mtime:修改時間,檔案的內容被改變時,就會更改,如vi
    ctime:改變時間,檔案的標籤如屬性、使用者、使用者組、許可權、內容等被改變時,就會更改,如chmod,chown,vi


6、檔案的時間戳(timestamp)是inode的內容之一,從inode來理解:ctime指inode上一次改變的時間,mtime指檔案內容上一次修改的時間,atime指檔案上一次開啟的時間。


7、atime不一定在訪問檔案之後被修改,因為:使用ext3檔案系統的時候,如果在mount的時候使用了noatime引數那麼就不會更新atime的資訊,就是不想filesystem做太多的修改,而改善讀取效能。