小编给大家分享一下Linux文件的时间有几种,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Linux文档的时间一般分三种:Access time-atime(访问时间)、Modification time-mtime(内容修改时间)、change-ctime(inode更改时间)。

1 这三个time的含义
简名全名中文名含义atimeaccess time访问时间文件中的数据库最后被访问的时间mtimemodify time修改时间文件内容被修改的最后时间ctimechange time变化时间文件的元数据发生变化。比如权限,所有者等
2 如何查看这3个time

[root@centos7time]#pwd/app/time[root@centos7time]#lltotal8-rw-------.1rootroot1933Nov1108:14anaconda-ks.cfg-rw-r--r--.1rootroot59Nov1108:15issue[root@centos7time]#statissueFile:‘issue’Size:59Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1108:15:05.650986739+0800Modify:2017-11-1108:15:05.650986739+0800Change:2017-11-1108:15:05.650986739+0800Birth:-[root@centos7time]#ls-l#默认的ls-l显示的是mtimetotal8-rw-------.1rootroot1933Nov1108:14anaconda-ks.cfg-rw-r--r--.1zhaojiediroot71Nov1109:05issue[root@centos7time]#ls-l--time=atime#列出文件的atimetotal8-rw-------.1rootroot1933Nov1108:14anaconda-ks.cfg-rw-r--r--.1zhaojiediroot71Nov1109:12issue[root@centos7time]#ls-l--time=ctime#列出ctimetotal8-rw-------.1rootroot1933Nov1108:14anaconda-ks.cfg-rw-r--r--.1zhaojiediroot71Nov1109:03issue3 三个time的测试3.1 测试准备工作

测试前,我们需要先关闭文件系统的relatime特性。这个随后在说,具体操作如下。

[root@centos7time]#mount-oremount,strictatime/app#重新挂载我们的/app,并修改文件系统工作在严格atime上,也就是不启用了默认的relatime支持。[root@centos7time]#mount|grep/app#查看我们的修改/dev/sda5on/apptypeext4(rw,seclabel,data=ordered)3.2 读取文件测试

[root@centos7time]#statissue#先获取3个时间File:‘issue’Size:59Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1108:15:05.650986739+0800Modify:2017-11-1108:15:05.650986739+0800Change:2017-11-1108:15:05.650986739+0800Birth:-[root@centos7time]#catissue#读取下\SKernel\ronan\mtty:\lhostname:\ntime:\t[root@centos7time]#statissue#再次查看3个时间File:‘issue’Size:59Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1108:57:40.858948780+0800Modify:2017-11-1108:15:05.650986739+0800Change:2017-11-1108:15:05.650986739+0800Birth:-

通过上面的分析,我们可以看出来,在使用cat读取文件后,文件的atime发生了改变。其他的没有改变。

3.3 修改文件测试

[root@centos7time]#statissue#先获取下3个timeFile:‘issue’Size:65Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1109:03:49.080931626+0800Modify:2017-11-1109:04:16.881930331+0800Change:2017-11-1109:04:16.881930331+0800Birth:-[root@centos7time]#echo"hello">>issue#修改文件[root@centos7time]#statissue#再次查看三个timeFile:‘issue’Size:71Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1109:03:49.080931626+0800Modify:2017-11-1109:05:07.775927960+0800Change:2017-11-1109:05:07.775927960+0800Birth:-

通过上面的实验,我们可以看出来,写文件操作不会导致atime(访问时间)的修改,但是mtime和ctime会发生修改。mtime修改了我们可以理解的,毕竟我们修改了文件的,

那为何ctime也修改了呢, 仔细可以发现我们文件的大小发生了变化,也就是元数据发生了变化,所以ctime也是要变化的。

3.4 修改文件所有者测试

[root@centos7time]#statissue#先查看下3个timeFile:‘issue’Size:71Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(0/root)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1109:03:49.080931626+0800Modify:2017-11-1109:05:07.775927960+0800Change:2017-11-1109:05:07.775927960+0800Birth:-[root@centos7time]#chownzhaojiediissue#修改权限[root@centos7time]#statissue#再次查看3个时间File:‘issue’Size:71Blocks:8IOBlock:4096regularfileDevice:805h/2053dInode:261123Links:1Access:(0644/-rw-r--r--)Uid:(1000/zhaojiedi)Gid:(0/root)Context:unconfined_u:object_r:etc_runtime_t:s0Access:2017-11-1109:03:49.080931626+0800Modify:2017-11-1109:05:07.775927960+0800Change:2017-11-1109:12:42.076906795+0800Birth:-

通过上面的实验,我们可以看出来,修改了权限后,文件ctime发生了变化。

4 说说relatime

常用命令对三个time的修改情况我们上面的测试,可以看出来,每次访问文件都会更新atime,这是很耗时的,尤其在web服务器上,大量用户只是访问html页面,完全没有必要修改atime。

从kernel2.6.29开始,文件系统默认集成了一个relatime的属性。

那么啥时候更新atime呢? 有2种情况会更新atime,第一种是mtime比atime新,第二种是上次访问是1天前的了。

5 常用命令对三个time的修改情况

上面我们做了3个测试,我们也对atime,mtime,ctime有了一定的了解。网上有人已经做了好多测试如下表。

+-------------------------------------------------+||timestampsmarkedforupdate||syscall|---------------------------------|||file|parentdir||---------------+-------------------+-------------||[2]chdir||||---------------|-|-||[3]fchdir||||---------------+-------------------+-------------||[4]chmod||||---------------|ctime|-||[5]fchmod||||---------------+-------------------+-------------||[6]chown||||---------------||||[7]fchown|ctime|-||---------------||||[8]lchown||||---------------+-------------------+-------------||[9]close|-|-||---------------+-------------------+-------------||[10]creat|atime,ctime,mtime|ctime,mtime||---------------+-------------------+-------------||[11]execve|atime|-||---------------+-------------------+-------------||[12]fcntl|-|-||---------------+-------------------+-------------||[13]ftruncate||||---------------|ctime,mtime|-||[14]truncate||||---------------+-------------------+-------------||[15]fstat||||---------------||||[16]stat|-|-||---------------||||[17]lstat||||---------------+-------------------+-------------||[18]fsync||||---------------|-|-||[19]fdatasync||||---------------+-------------------+-------------||[20]link|ctime|ctime,mtime||---------------+-------------------+-------------||[21]lseek|-|-||---------------+-------------------+-------------||[22]mknod|atime,ctime,mtime|ctime,mtime||---------------+-------------------+-------------||[23]mkdir|atime,ctime,mtime|ctime,mtime||---------------+-------------------+-------------||[24]mmap|*|-||---------------+-------------------+-------------||[25]munmap|-|-||---------------+-------------------+-------------||[26]msync|*|-||---------------+-------------------+-------------||[27]open|*|*||---------------+-------------------+-------------||[28]pread||||---------------||||[29]read|atime|-||---------------||||[30]readv||||---------------+-------------------+-------------||[31]pwrite||||---------------||||[32]write|ctime,mtime|-||---------------||||[33]writev||||---------------+-------------------+-------------||[34]rename|implementation|ctime,mtime||---------------+-------------------+-------------||[35]rmdir|-|ctime,mtime||---------------+-------------------+-------------||[36]readlink|*|-||---------------+-------------------+-------------||[37]readdir|atime|-||---------------+-------------------+-------------||readahead|?|?||---------------+-------------------+-------------||[38]symlink|*|*||---------------+-------------------+-------------||sendfile|?|?||---------------+-------------------+-------------||[39]unlink|-|ctime,mtime||---------------+-------------------+-------------||[40]utime|ctime|-|+-------------------------------------------------+

以上是“Linux文件的时间有几种”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!