Linux下文件系统的三个主要时间属性atime、ctime、mtime
来源:互联网 发布:网络最常鼓掌处理方法 编辑:程序博客网 时间:2024/05/16 07:19
我们经常用Windows,那windows下文件系统有哪些时间属性呢?
我们在windows鼠标点击一个文件右键 属性查看一下
有三个时间: 创建、修改、访问。那要学习的三个Linux文件属性就会更清晰的理解了,
在Linux环境下我们输入命令 : stat filename(要查看的文件名)
[admin@bogon 3_20]$ lsfile[admin@bogon 3_20]$ stat file File: `file' Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: 802h/2050d Inode: 531186 Links: 1Access: (0477/-r--rwxrwx) Uid: ( 500/ admin) Gid: ( 0/ root)Access: 2017-03-19 09:12:42.676038855 -0700Modify: 2017-03-19 09:12:42.676038855 -0700Change: 2017-03-19 09:48:42.597038333 -0700[admin@bogon 3_20]$ ^C
我们发现最下面三行就是我们今天所要研究的对象,方便大家浏览,我整理了一个导图:
根据 POSIX 的规定,Linux 以及 Unix 等系统都要为系统中的所有文件记录文件的最后访问时间,叫做 atime。对于某些应用来说,atime 是很重要的信息。比如一些邮件程序会通过邮件文件的 atime 来判断此邮件是否已读;一些备份和清理程序会根据文件在多长时间内没有被访问,来决定是否对文件进行清理和归档。
但是对于大部分应用来说,atime 信息并不重要,而系统更新 atime 所带来的开销却是巨大的。因为系统每访问一次某个文件,就要对这个文件更新一个新的 atime 时间值。我这里所说的访问,并不是从用户角度来看的打开一个文件,而是系统底层的每一次 open 和 read 等操作。设想一下,我们每对文件进行一次读操作,都要引起一个对磁盘的写操作,即使我们要读的内容已经存在于内存的 Page Cache 中,还是要对磁盘进行一个写操作。这样引起的开销确实是巨大的,这些写操作会使磁盘更多的处于忙碌状态,这对系统性能(因为磁盘在完成一个写操作的时候会暂时阻止其他的写操作)以及电量消耗都是不利的。
有两个可用来降低 atime 更新效果的方法:
1)使用 noatime 挂载
使用 noatime 挂载,可在那个文件系统中禁用 atime 更新。
当挂载文件系统时,可指定 Linux 挂载选项 noatime,它可在那个文件系统中禁用 atime 更新。
用法
mount BlockDevice MountPoint -o noatime
BlockDevice
指定 GFS2 文件系统所在的块设备。
MountPoint
指定要挂载 GFS2 文件系统的目录。
示例
在这个示例中,GFS2 文件系统位于 /dev/vg01/lvol0,并挂载到关闭了 atime 更新的 /mygfs2 目录中。
mount /dev/vg01/lvol0 /mygfs2 -o noatime
也可以将 noatime 选项写在 /etc/fstab 文件里。
如果不想对整个文件系统禁止 atime 更新,而只是想针对某些文件或目录禁止,则可以通过 chattr 命令来完成,如下面的命令:
chattr -R +A /some/dir
可以对某个目录及其下面的所有文件禁止 atime 更新。
除了 noatime,还有两个和 atime 相关的文件系统选项。一个是 nodiratime,此选项只针对目录禁止进行 atime 更新(注意 noatime 对文件和目录都生效,是 nodiratime 的超集)。这样就可以使 ls这样的命令不会更新目录的 atime 值。
对于某些用户某些应用,atime 信息可能是必要的,比如本节一开始提到的邮件程序和备份工具。如果完全禁止 atime 更新会使这些程序无法正常工作。针对这种情况,Linux 在内核 2.6.20 中添加了一个新的 mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。在内核 2.6.24 中,又对 relatime 进行了扩展,在访问文件时,当 atime 已经超过某个时间(例如一天)没有更新,就对 atime 进行更新。这个扩展的意思就是调整 atime 的更新粒度。
目前 relatime 还没有被广泛的应用,因为许多 Linux 发行版的内核版本和 mount 命令还没有支持这个选项。如果你的系统支持 relatime,可以使用方法2。
2)使用 relatime 挂载
使用 relatime(relative atime)挂载,可在前一个 atime 更新比 mtime 或者 ctime 更新旧时更新 atime。
当挂载文件系统时,可指定 relatime(relative atime)Linux 挂载选项。如果前一个 atime 更新比 mtime 或者 ctime 更新旧,这就可指定更新 atime。
用法
mount BlockDevice MountPoint -o relatime
BlockDevice
指定 GFS2 文件系统所在的块设备。
MountPoint
指定要挂载 GFS2 文件系统的目录。
示例
在这个示例中,GFS2 文件系统位于 /dev/vg01/lvol0,并挂载到目录 /mygfs2。只有在前一个 atime 更新比 mtime 或者 ctime 更新旧时才会进行 atime 更新。
mount /dev/vg01/lvol0 /mygfs2 -o relatime
文章部分节选自:http://chuansong.me/n/1954686
- Linux下文件系统的三个主要时间属性atime、ctime、mtime
- Linux的三个时间(mtime\ctime\atime)
- Linux下的三个时间参数:atime 、mtime和ctime
- linux下的三个时间(Atime,Mtime,Ctime)
- LINUX下三个时间点--atime,ctime,mtime解析
- linux下文件的三个时间(Atime ,Mtime,Ctime)
- Linux文件的三个时间参数atime,mtime,ctime;
- Linux操作系统下文件的三个时间属性atime 、ctime 、mtime
- 初识Linux-Linux下的三个时间参数(atime、mtime、ctime)
- 浅析Linux下的atime、ctime、mtime
- 浅析Linux下的atime、ctime、mtime
- linux的ctime,atime,mtime
- Linux下文件的三个时间:ctime、mtime、atime的区别
- linux下文件的三个时间 atime,ctime,mtime及其如何改变
- Linux下关于文件的三个时间(atime/ctime/mtime)
- linux下atime,mtime,ctime三种时间状态
- Linux中ctime mtime atime文件时间的区别
- linux文件时间(atime,mtime,ctime)辨析
- FastDFS FAQ
- 多线程_定时删除指定的带内容目录
- 【问题解决】Packet for query is too large (1165 > 1024). You can change this value
- Java 8 时间日期库的20个使用示例
- C++数据成员必须在构造函数初始化列表中初始化
- Linux下文件系统的三个主要时间属性atime、ctime、mtime
- RocketMQ(二)集群配置
- TensorFlow入门 fully_connected_feed.py
- RecyclerView 复用与 CheckBox 结合使用导致的问题
- 170321 Qt远程控制界面、文件图像,汇编第四章实验
- Android-Mina-Java.lang.NoclassDefFoundError:org.apache.mina.transport.socket.NioSocketConnector
- Table Decorations CodeForces
- 关于IE11访问百度贴吧不能翻页的解决办法
- Golang操作Office Excel 文档类库Excelize