linux stat命令、inode內容--ctime,mtime,atime的區別
1、[root@localhost 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做太多的修改,而改善讀取效能。