帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  如何查看文件的最近访问和修改动态

如何查看文件的最近访问和修改动态

2015-12-02 23:28:25 8130

1.每个文件内节点和目录内节点都有三个与之相关的时间戳:

ctime — 最后一次修改内节点状态的时间

mtime — 最后一次修改文件(或者目录)数据的时间

atime — 最后一次访问文件(或者目录)数据的时间

你可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:

stat filename

 

2.ls命令查看:

ls -lc filename 列出文件的 ctime

ls -lu filename 列出文件的 atime

ls -l filename 列出文件的 mtime

 

3.atime更新的一些问题及解决方法

如果启用了 atime 更新,因为在 GFS2 和其它 Linux 文件系统中这是默认设置,那么每次在读取文件时都需要更新其内节点。

根据 POSIX 的规定,Linux 以及 Unix 等系统都要为系统中的所有文件记录文件的最后访问时间,叫做 atime。对于某些应用来说,atime 是很重要的信息。比如一些邮件程序会通过邮件文件的 atime 来判断此邮件是否已读;一些备份和清理程序会根据文件在多长时间内没有被访问,来决定是否对文件进行清理和归档。

但是对于大部分应用来说,atime 信息并不重要,而系统更新 atime 所带来的开销却是巨大的。因为系统每访问一次某个文件,就要对这个文件更新一个新的 atime 时间值。我这里所说的访问,并不是从用户角度来看的打开一个文件,而是系统底层的每一次 open 和 read 等操作。设想一下,我们每对文件进行一次读操作,都要引起一个对磁盘的写操作,即使我们要读的内容已经存在于内存的 Page Cache 中,还是要对磁盘进行一个写操作。这样引起的开销确实是巨大的,这些写操作会使磁盘更多的处于忙碌状态,这对系统性能(因为磁盘在完成一个写操作的时候会暂时阻止其他的写操作)以及电量消耗都是不利的。

使用 noatime 挂载用来降低 atime 更新效果的方法

使用 noatime 挂载,可在那个文件系统中禁用 atime 更新。

当挂载文件系统时,可指定 Linux 挂载选项 noatime,它可在那个文件系统中禁用 atime 更新。

用法

mount BlockDevice MountPoint -o noatime

示例:mount /dev/sdb5 /home/sdb5 -o noatime

 

也可以将 noatime 选项写在 /etc/fstab 文件里。

如果不想对整个文件系统禁止 atime 更新,而只是想针对某些文件或目录禁止,则可以通过 chattr 命令来完成,如下面的命令:

 chattr -R +A /some/dir

可以对某个目录及其下面的所有文件禁止 atime 更新

 

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: