Linux文件的三个时间详解
2016-01-12 15:45
309 查看
一、linux文件三个时间的查看
linux下使用命令stat获取文件的三个时间,如下
各时间的含义
时间名称 | 简称 | 中文名称 | 含义 | linux 命令 | 备注 |
---|---|---|---|---|---|
access time | atime | 访问时间 | 最后一次访问文件或目录的时间 | ls -lu filename | 注意,访问时间的更新并不是实时的,详见下一小节 |
modifytime | mtime | 修改时间 | 最后一次修改文件或目录的时间 | ls -l filename | 对文件内容修改一次便会更新该时间。 |
changetime | ctime | 改变时间 | 更改文件的属性的时间 | ls -lc filename | 比如使用chmod命令更改文件属性,或者执行其他命令时隐式的附带更改了文件的属性若文件大小等 |
二、文件访问时间的更新策略
有时候我们会发现,即是访问了文件,该文件的访问时间也不会变,如下,想要了解造成上述现象的原因,需回顾kernel更新文件访问时间的策略,其策略经过了三个发展阶段。
初始阶段
linux总是实时更新访问时间的,但这会涉及到大量的写磁盘操作,严重影响到linux性能。
第二阶段
考虑到1的缺陷,可以在挂载文件系统时使用noatime属性来停止更新atime。但这会对许多应用程序造成影响,比如邮箱,备份软件,时间同步工具…
第三阶段
综合1,2,现在的linux使用了折中方案,挂载文件系统时使用的默认属性为relatime。其更新策略为:当满足以下任一条件时才更新访问时间,
访问时间早于修改时间或改变时间
距离上次更新时间间隔大于24h
根据上述更新策略,当访问时间大于修改时间和改变时间时,且距离上次更新时间小于24h时,访问时间不再更新,这就是造成上述更新时间不变的原因。
三、访问时间早于修改时间的解释
有时候,我们会发现某一文件的访问时间甚至比修改时间还要早,如下所示,这是因为在修改文件的操作中,有的会访问到该文件,有的不会。
修改文件示例1(同时访问该文件)
比如,使用命令
vim file修改文件,同时也访问了该文件。所以,修改完后首先更新文件的修改时间,接着更新访问时间。由于此时的访问时间已经小于新的修改时间,所以更新访问时间到与修改时间相同。
修改文件示例2(不访问)
使用命令
echo "hello" >> file,此命令仅仅修改了文件,并没有访问,故仅更新修改时间,访问时间因为没变而晚于修改时间,此即上述现象产生的原因。
四、目录的三个时间
考虑到可以将目录类比为文件,目录下面的文件即目录的内容。所以,可以得到目录的三个时间的更新策略。新增、删除目录下的文件(
touch dir_test/test.md、
rm dir_test/test.md)
相当于修改目录的内容,故此时目录“dir_test”的修改时间会改变。不过还需注意以下几点:
上述过程中,“dir_test”的访问时间不会改变。
若修改文件test.md的内容,“dir_test”的修改时间也会改变。
上述修改不会影响到更上一级目录时间的更新。
查看目录(ll dir_test)
目录“dir_test”的访问时间会更新。
五、参考文章
[1]<转载>在Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间[2]stat (system call)
[3]Once upon atime
相关文章推荐
- linux 防火墙--firewalld学习
- linux :安装中文输入法
- 关于linux - Centos 7 下DHCP服务的安装与配置
- linux cron实战:定时github
- 发现Linux中IP地址冲突的方法
- centos 分区扩容
- linux下vi命令大全
- linux系统中ffmpeg安装配置步骤
- linux常用命令及学习小结(4)--IP设置、samba、ftp
- Linux设备模型(3)_Uevent
- Linux软RAID操作指令 - mdadm
- Linux下创建文件系统
- centos6.5下安装ffmpeg
- linux特殊符号大全
- linux 编程初学
- linux笔记整理-用户添加用户组管理
- linux常用命令及学习小结(3)--软件安装、权限
- Linux下好用的类似QQ截图工具
- Centos 7 mysql Buffered warning: Changed limits: max_connections: 214 解决方法
- linux 安装系统划分lvm分区