而在Linux下,一個文件也有三種時間,分別是:訪問時間、修改時間、狀態改動時間。
兩者有此不同,在Linux下沒有創建時間的概念,也就是不能知道文件的建立時間,但如果文件建立後就沒有修改過,修改時間=建立時間;如果文件建立後,狀態就沒有改動過,那麼狀態改動時間=建立時間;如果文件建立後,沒有被讀取過,那麼訪問時間=建立時間,因爲不好判斷文件是否被改過、讀過、其狀態是否變過,所以判斷文件的建立時間基本上能爲不可能。
# date && echo "this is file be used test time of file" >filetime.txt && ll --full-time filetime.txt
Tue Aug 4 15:13:44 HKT 2009
-rw-r--r-- 1 root root 39 2009-08-04 15:13:44.000000000 +0800 filetime.txt
# stat filetime.txt
File: `filetime.txt'
Size: 39 Blocks: 8 IO Block: 4096 Regular File
Device: 802h/2050d Inode: 17 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 15:13:44.000000000 +0800
Modify: 2009-08-04 15:13:44.000000000 +0800
Change: 2009-08-04 15:13:44.000000000 +0800
說明:Access訪問時間。Modify修改時間。Change狀態改動時間。可以stat *查看這個目錄所有文件的狀態。
atime=access time
mtime=modifiy time
2、修改時間,修改時間是文件內容最後一次被修改時間。比如:vi後保存文件。ls -l列出的時間就是這個時間。
3、狀態改動時間。是該文件的i節點最後一次被修改的時間,通過chmod、chown命令修改一次文件屬性,這個時間就會更新。
st_atime 文件數據的最後存取時間 read -u
st_mtime 文件數據的最後修改時間 write 缺省
st_ctime 文件數據的最後更改時間 chown,chmod -c
find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"
find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"
File: `filetime1.txt'
Size: 0 Blocks: 0 IO Block: 4096 Regular File
Device: 10ah/266d Inode: 12 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:51:32.000000000 +0800
Change: 2009-08-04 20:51:32.000000000 +0800
[root@logs-bak foo]# stat filetime1.txt
File: `filetime1.txt'
Size: 14 Blocks: 2 IO Block: 4096 Regular File
Device: 10ah/266d Inode: 12 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800
foo.ok
#stat filetime1.txt
File: `filetime1.txt'
Size: 14 Blocks: 2 IO Block: 4096 Regular File
Device: 10ah/266d Inode: 12 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800
File: `filetime1.txt'
Size: 23 Blocks: 2 IO Block: 4096 Regular File
Device: 10ah/266d Inode: 14 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:55:05.000000000 +0800
# stat filetime1.txt
File: `filetime1.txt'
Size: 23 Blocks: 2 IO Block: 4096 Regular File
Device: 10ah/266d Inode: 14 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:57:36.000000000 +0800
使用這個特性來掛裝文件系統後,只有當mtime比atime更新的時候,纔會更新atime。事實上,這個時候atime和mtime已經是同一個東西了。所以這個選項就是爲了實現對atime的兼容才推出的。並不是一個新的時間屬性。使用方法就是通過mount -o relatime /dir來掛裝目錄。