在咱们进行系统运维的时候,会须要去查看系统下文件的一些时间属性,如建立时间、修改时间等,好比查看一个应用的配置文件的修改时间,用于初步判断该文件是否被篡改过。那么本文就针对Linux系统下的文件的时间属性来作一个介绍。vim
在Linux系统下,文件的时间属性主要分为三种:less
访问时间 atime:运维
也就是Access time。读一次文件的内容,该文件的atime就会更新。好比常见的使用more、cat对该文件进行查看时,其atime将更新。ide
修改时间 mtime:布局
也就是Modify time。对该文件进行内容上的修改,该文件的mtime就会更新。好比常见的使用vi、vim对文件进行修改后保存,其mtime将更新。优化
文件属性变动时间 ctime:spa
也就是Change time。对该文件的属性状态进行修改,改文件的ctime就会更新。好比文件名、内容、大小、权限、所属组等改变时,其ctime将更新。blog
使用ll或ls -l命令查看的就是mtime:图片
使用ll --time=atime或ls -lu查看的就是atime:资源
使用ll --time=ctime或ls -lc查看的就是ctime:
固然,咱们还可使用stat命令来同时查看文件的三种时间属性:
使用cat命令来触发其atime更新:
使用vi修改来触发其mtime更新:
在这里咱们能够看到该文件的mtime和ctime都被更新了,并且是ctime紧接着mtime更新,几乎是同一时刻。那是由于使用vi修改保存时,理所固然的mtime更新,随后因为文件大小发生变化,触发ctime更新。
使用chmod来触发其ctime更新:
简单总结下,能正常触发修改上述3种时间属性的命令和效果:
cat、less、more等只读文件,不修改文件的操做,只会修改atime的值。
chmod、chown等修改文件权限、全部者,所属组的操做,会修改atime和ctime的值。
vi等修改文件内容的操做,会修改atime、ctime、mtime的值。(实际操做中,出现过atime不变的状况)
结合find命令查找特定时间要求的文件,例如查询最近24小时内修改过的文件:find /data -mtime 24
经过查看atime来判断是否该文件被查看、访问过,没有多大意义,由于任何一个操做均可能引发atime的变动,并且一个文件建立后至少要被读取才算有用吧。
经过查看mtime来判断是否该文件被修改过,其实也不算准确,由于mtime除了正常修改文件会更新外,也能够被特地进行修改到一个虚假的时间点里,如使用touch命令。
好比使用touch命令把时间修改到3天前,从下图中咱们能够看到atime和mtime都被修改到了3天前:
也能够修改到特定的时间点上:
不过从上面两个修改能够看出,ctime是没有被修改的。
那么是否能够经过ctime来判断该文件是否被修改过呢?也不行!由于这个时间也是能够被更新的,仍是使用touch命令,如touch -c和touch -a,不过能够看出touch -c将修改3个时间,touch -a只修改了atime和ctime。
默认状况下,系统每次访问、修改、建立磁盘里的文件的时候,都会更新文件的atime,致使系统会有部分资源消耗在此,从而使得系统开销增长。若是咱们能让系统不对atime进行记录更新,那么能够在某个程度上让系统获得必定的优化,参考操做以下:
echo -ne
"
proc /proc proc noatime,defaults 0 0
"
>>/etc/fstab
sudo mount -a
简单回顾一下,咱们从3种时间属性的开始引入;并介绍借由ll命令查看文件的时间属性;再演示触发更新时间的几个命令的效果;分享利用时间属性的通常常见操做;最后提供时间属性的系统优化的操做给你们参考。以上是本文对进行系统运维时,查看Linux系统下文件的时间属性的分享,但愿对你们有帮助。
做者:何立