linux下atime,mtime,ctime三种时间状态
在讲解之前先了解索引节点inode包含什么。我们知道,在Linux中使用stat filename 后会显示 该文件详细信息。该信息保存在一个名为“索引节点”的区域,叫做inode。inode包含文件的信息:文件的字节数;文件数据block的位置;文件的读、写、执行权限;文件拥有者的ID;文件的Group ID;文件的时间戳(mtime,atime,ctime)
在讲解之前先了解索引节点inode包含什么。
我们知道,在Linux中使用stat filename 后会显示 该文件详细信息。该信息保存在一个名为“索引节点”的区域,叫做inode。
inode包含文件的信息:
文件的字节数;
文件数据block的位置;
文件的读、写、执行权限;
文件拥有者的ID;
文件的Group ID;
文件的时间戳(mtime,atime,ctime);
文件链接数等。
下面详述三种linux系统文件中时间戳的不同:
atime:Access time,在读取文件或执行文件时更改。
mtime:Modifiedtime,在写入文件时随文件内容的更改而更改。
ctime:Change time,在写入文件、更改所有者、权限或链接设置时随inode的内容更改而更改。mtime改变,ctime随之改变。
所以得出结论:
1,只有读取或者执行文件后,atime改变而mtime,ctime不改变。
2,只想文件写入内容后,mtime改变而ctime改变,atime不改变。
3,只修改inode信息(除文件内容)后,ctime改变atime,mtime不改变。
下面通过三个实验来更好的验证猜想。
(1)执行 $ gcc -o file.out file.c
对比第一张图可以发现:只有atime改变了,而mtime和ctime都未改变。因为只有执行访问file.c文件,而未改变文件内容或者文件inode信息。
(2)执行$ echo "/*file.c*/">>file.c
对比上一张图可以发现:mtime和ctime都改变了,而atime未改变。因为向file.c结尾写入内容,修改了文件内容,文件的inode信息也随之改变。但并没有执行或者读取file.c内容。
(3)执行$ chmod u+x file.c
对比上一图可以发现:只有ctime改变而atime和mtime没改变。因为修改了file.c文件,增加了可执行权限。文件的inode信息随之改变,而未改变文件内容或者执行(读取)文件。
更多推荐
所有评论(0)