LInux中的atime、mtime和ctime

一 定义

缩写全称释义
atimeAccess Time文件最后一次访问(读取或执行)的时间
mtimeModify Time文件内容最后一次改变的时间
ctimeChange Time文件属性最后一次改变(包括权限、链接个数等)的时间

二 mtime和ctime的比较

mtime指的是文件内容最后一次被修改后的时间。
比如用echo将内容重定向至文件,或者用vim编辑文件内容时,时间会改变。

ctime指的是文件的元数据最后一次被修改的时间,也就是文件的属性信息。
比如更改文件的inode、文件的链接数、文件的权限、文件的属主和属组用户信息等。

需要注意的是,当文件的内容被修改时,首先block会必然改变,因为文件的大小与之前会不一致;其次inode也会随之变化,文件变得不同,属性信息也会发生改变;而inode的变化也会导致ctime的变化,因为元数据发生了改变。

简单总结就是,mtime改变,ctime就一定会改变;
ctime改变,mtime却不一定改变。

三 atime在访问文件后并不一定会修改

使用 ext3 文件系统的时候,如果在使用 mount 命令进行挂载时使用了 noatime 参数,那么就不会更新 atime 的信息。

事实上,无论读取文件,还是复制文件,都需要访问源文件,都会进行频繁的写操作,并且增加了磁盘的IO消耗,会相当消耗系统资源。如果完全禁止atime的修改,则会破坏 POSIX 兼容性。

针对这个问题,Linux 内核 2.6.20 开始为mount引入了一个–relatime选项,并从 2.6.30 开始这一选项默认是开启的。当开启了–relatime选项后,只有当 atime < mtimeatime < ctime 或文件的上次访问时间超过 1 天,才会去更新 atime。

上述设置,一方面大幅度减少atime写操作对系统资源的消耗,另一方面降低了对备份软件的影响(某些备份软件需要通过对比 atime、mtime、ctime 的时间来判断是否需要进行备份)。

四 相关操作命令对三个时间的影响

表示时间发生改变,用×表示不发生改变

命令atimemtimectime
cat×××
cp×××
mv×
chmod××
chown××
touch
>
>>
vi、vim(不修改)××
vi、vim(修改)
执行可执行文件××
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值