atime,mtime和ctime的區別

atime、mtime、ctimephp

atime: 在文件被讀、寫、truncate、mknod、utime 時更改atime
mtime: 在文件被mknod、utime更改和寫入時 更改mtime
ctime: 文件i-node最近一次修改的時間
文件全部者、組、權限 被更改時更新node

Time
建立文件
更改文件內容
查看文件(只讀)
修改文件屬性
如權限、用戶、組、chattr...less

atime
Y
Y ---   讀、寫方式如用編輯器等打開,並更改文件內容時,同時作了查看和更改,因此此時更改atime
N ---  用>和>>或只寫打開時不改變atime
Y
N 編輯器

mtime
Y
Y
N
N測試

ctime
Y
Y
N
Yit

[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:46:14
CTime: 01-30 15:46:14
注意: 用mv時只改變了ctime,而此時沒用訪問因此atime不變, 由於沒有改文件內容因此mtime不變,這時改的是i-node因此ctime進行了改變
[root@localhost ~]# mv a.txt b.txt
[root@localhost ~]# vi a.php  把裏面的a.txt 改爲b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:46:14
CTime: 01-30 15:47:08
==============================================
.建立文件時:
[root@localhost ~]# touch a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:39:58
MTime: 01-30 15:39:58
CTime: 01-30 15:39:58
.編輯文件時
[root@localhost ~]# echo 1 >a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:39:58
MTime: 01-30 15:42:03
CTime: 01-30 15:42:03
[root@localhost ~]# vi a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:42:23
MTime: 01-30 15:42:23
CTime: 01-30 15:42:23
[root@localhost ~]# gedit a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:43:17
MTime: 01-30 15:43:16
CTime: 01-30 15:43:16
[root@localhost ~]# gedit  b.txt
[root@localhost ~]# php a.php
ATime: 01-30 17:05:41
MTime: 01-30 17:05:41
CTime: 01-30 17:05:41
[root@localhost ~]# kate a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:44:48
MTime: 01-30 15:44:48
CTime: 01-30 15:44:48
[root@localhost ~]# echo "fddddddd6" >a.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:46:14
CTime: 01-30 15:46:14
[root@localhost ~]# mv a.txt b.txt
[root@localhost ~]# vi a.php  把裏面的a.txt 改爲b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:46:14
CTime: 01-30 15:47:08
.修改b.txt文件的權限
[root@localhost ~]# chmod +x b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:46:14
CTime: 01-30 15:48:42
.用echo方式向文件內寫入(重定向)內容2
[root@localhost ~]# echo 2 >b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:45:47
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
..訪問文件時,只是更改atime
.用cat方式來訪問文件內容
[root@localhost ~]# cat b.txt
2
[root@localhost ~]# php a.php
ATime: 01-30 15:51:22
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
.用vi b.txt方式打開文件,只是查看下內容,但不修改
[root@localhost ~]# vi b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:51:57
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
.用head方式來訪問文件內容
[root@localhost ~]# head b.txt
2
[root@localhost ~]# php a.php
ATime: 01-30 15:52:49
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
.用more方式來訪問文件內容
[root@localhost ~]# more b.txt
2
[root@localhost ~]# php a.php
ATime: 01-30 15:53:07
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
.用less方式來訪問文件內容
[root@localhost ~]# less b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:53:38
MTime: 01-30 15:49:44
CTime: 01-30 15:49:44
.truncate截取文件內容時
[root@localhost ~]# cat a.c
#include <unistd.h>
#include <sys/types.h>
int main()
{
truncate("b.txt",0);
return 0;
}
[root@localhost ~]# make a
cc  a.c  -o a
[root@localhost ~]# ./a
[root@localhost ~]# php a.php
ATime: 01-30 15:53:38
MTime: 01-30 16:02:04
CTime: 01-30 16:02:04
.修改所屬用戶
[root@localhost ~]# chown cnscn b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:53:38
MTime: 01-30 16:02:04
CTime: 01-30 16:29:39
.修改文件屬組
[root@localhost ~]# chown .cnscn b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:53:38
MTime: 01-30 16:02:04
CTime: 01-30 16:30:11
.chattr
[root@localhost ~]# chattr  -i b.txt
[root@localhost ~]# php a.php
ATime: 01-30 15:53:38
MTime: 01-30 16:02:04
CTime: 01-30 16:35:42
.綜上:
1)文件只讀時, 影響atime
2)文件內容修改時,同時更新mtime和ctime
3)修改文件屬性時(chattr、chmod、chown),只更改ctime
即1)atime、ctime能夠單獨出現
2)出現mtime一定時修改ctime
[注] 測試僅僅作了上面一些,若是總結不的對,請你們補充,謝謝權限

相關文章
相關標籤/搜索