你有没有遇到过这样的场景:排查服务器异常入侵,怀疑关键配置文件被非授权访问,想找到访问痕迹;整理服务器磁盘,要删掉长期闲置的无用文件;排查程序缓存同步问题,要确认文件是否真的被读取过?这时候,查看文件的最后访问时间,就是解决问题的关键一步。很多用了linux很久的用户,也经常分不清访问时间和修改时间,更别说快速查到想要的信息了,今天就给大家整理了清晰好上手的操作方法。
先理清:别把linux文件的三个时间搞混
很多新手打开ls命令,默认看到的其实是文件的内容修改时间(mtime),并不是我们要找的「最后访问时间」。linux中每个文件默认会记录三个不同的时间属性,分别是:最后访问时间(atime,即access time),只要读取了文件内容就会更新这个时间;内容修改时间(mtime,即modify time),只有修改了文件内容才会更新;状态修改时间(ctime,即change time),修改文件权限、位置、属主等元信息时才会更新。我们要找的文件被打开读取的最后时间,就是atime。

单文件查看最推荐:用stat命令一目了然
如果只需要查看单个文件的最后访问时间,stat命令绝对是第一选择,所有linux发行版都默认自带,不需要额外安装工具,输出信息也非常清晰。操作方法也很简单,只需要输入`stat 你的文件名`就可以。比如要查看/etc/nginx/nginx.conf的最后访问时间,输入`stat /etc/nginx/nginx.conf`,就能在输出结果中直接看到标注为access的一行,精确到纳秒的访问时间、时区都清晰展示,哪怕是刚接触linux的新手也能一眼找到想要的信息,不会和其他时间属性混淆。

批量筛选查看:用ls和find满足更多需求
如果需要同时查看多个文件的最后访问时间,可以用ls命令的进阶参数:输入`ls -lu 文件目录`就能批量列出目录下所有文件的最后访问时间;如果想要按访问时间从新到旧排序,只需要再加一个t参数,改成`ls -lut 目标目录`,最新访问过的文件会自动排在最前面,找文件的时候特别方便。如果你需要批量筛选符合访问时间条件的文件,比如清理磁盘时找出180天没访问过的闲置文件,用find命令更灵活:`find /home -type f -atime +180`就能直接输出所有满足条件的文件,不用逐个检查。
最后要提醒大家:现在很多服务器为了优化磁盘性能,会在挂载文件系统时添加noatime参数,关闭atime自动更新来减少io消耗,如果发现查询到的最后访问时间不准,可以先检查一下/etc/fstab中的挂载配置,避免走弯路。(全文742字)



































