对atime、mtime和ctime的研究
前期准备
在实验之前我们在讨论为何会出现两种修改时间,为此我们推测因为修改的不是文件的同一数据,或者说同一地方,那么我们就要先搞清楚文件的结构。
linux文件系统是Linux系统的心脏部分,提供了层次结构的目录和文件。文件系统将磁盘空间划分为每1024个字节一组,称为块(也有用512字节为一块的,如:SCOXENIX)。编号从0到整个磁盘的最大块数。
全部块可划分为四个部分,块0称为引导块,文件系统不用该块;块1称为专用块,专用块含有许多信息,其中有磁盘大小和全部块的其他两部分的大小。从块2开始是i节点表,i节点表中含有i节点,表的块数是可变的。i节点表之后是空闲存储块(数据存储块),可用于存放文件内容。i节点是一个64字节长的表,含有有关一个文件的信息,其中有文件大小、文件所有者、文件存取许可方式,以及文件为普通文件、目录文件还是特别文件等。在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。结合这些知识,我们猜测修改时间或者改变时间一个对应了对文件内容的修改,一个对应对文件权限或属性的修改即对i节点数据的修改。
在此之前还有一个时间,即文件的访问时间,这个没有争议,就是文件最后的访问时间。下面我们开始进行实验。
实验过程:
首先我们创建一个文件 test

用stat命令查看下属性

可以看到三个时间都是一样的 23:06:32
修改前

修改后

看下时间

我们发现只有change时间发生变化。下面我们对test.c的内容进行更改
更改前 更改后

看一下时间变化

修改时间和改变时间都变化了,与假设不相符,证明假设是错误的,那我们再次提出假设,只要文件发生变化,change时间就会改变,只有对文件内容更改时Modify(修改时间)才会变化。
下面验证这一假设
我们用mv指令对test.c进行操作

看下时间变化

只有change时间发生了变化,接下来对test.c的内容进行更改


可以看到修改时间和change时间都发生了变化,我们再实验一下,这次用ln指令(软连接)

可以看到改变文件的属性只有change时间改变,而modify时间未变。
为了保证严谨性,我们换个文件再试验一次

我们更改文件内容

可以看多到两个时间都改变了,下面我们更改文件权限


查看时间

可以看到只有change时间改变了
综上,我们可以得出结论
Access时间是最后的访问时间,Modify是指最后修改文件内容的时间,Change是指最后对文件进行修改操作的时间。
最后附上基本操作对这三个时间的影响
|
操作 |
Atime |
Mtime |
Ctime |
|
Mv |
________ |
________ |
√ |
|
Cp |
√ |
________ |
________ |
|
Touch |
√(被设置的时间) |
√(被设置的时间) |
√ |
|
Cat/more/less |
√ |
________ |
________ |
|
Ls |
________ |
________ |
________ |
|
Chmod/chmown |
________ |
________ |
√ |
|
Ln |
________ |
________ |
√ |
|
Echo |
________ |
________ |
________ |
|
vi |
√ |
________ |
________ |
对atime、mtime和ctime的研究的更多相关文章
- 【Linux常识篇(3)】文件及文件夹的ctime atime mtime的含义详解
首先可以使用stat 命令来查询文件的inode信息,其中包括ctime atime mtime [root@localhost ~]# stat sort2.txt File: 'sort2.txt ...
- Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime
我们知道 Linux里面一切皆文件 ,那么我们能否查看一个文件是何时创建的呢?答案是否定的.那我们可以知道些文件关于时间的什么信息呢?那就不得不说文件状态的三个时间了,它们分别是 -atime, -c ...
- Linux -atime、mtime、ctime
Linux中,文件都有其自身的atime.mtime.ctime,在不同的命令下,各时间发生相应的改变.下面,我们来简单的介绍一下: atime (access time):表示最后一次访问文件或目录 ...
- linux中文件的三种time(atime,mtime,ctime)
linux下文件有3个时间的,分别是atime,mtime,ctime.有些博友对这3个时间还是比较迷茫和困惑的,我整理了下,写下来希望对博友们有所帮助. 1 这三个time的含义 简名 全名 中文名 ...
- atime,mtime,ctime 的理解
Linux之atime,mtime,ctime from:http://blog.sina.com.cn/s/blog_5980699f0100zkgz.html 首先可以使用stat 命令来查询文件 ...
- atime、mtime、ctime
当你同熟练的UNIX用户进行交谈时,你经常会听到他们傲慢地讲出术语“改变时间(change time)”和“修改时间(modification time)”.对于许多人(和许多字典而言),改变和修改是 ...
- atime、mtime、ctime的区别及如何降低atime更新 mount时的option noatime
atime.mtime.ctime的区别及如何降低atime更新 mount时的option noatime http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3 ...
- Linux之 find之 ctime,atime,mtime
在Linux操作系统中,每个文件都有很多的时间参数,其中有三个比较主要,分别是ctime,atime,mtime atime 最后一次访问时间, 如 ls, more 等, 但 chmod, chow ...
- linux中文件的时间属性atime/mtime/ctime
文件的时间属性的概念 上图第7-9是时间,默认是ctime(文件修改时间),有三种时间属性: modify time mtime (文件内容被修改的时间) change ti ...
随机推荐
- 基于分布式、服务化的maven项目文件规划
引言 此文不是纯粹介绍maven概念,而是介绍一个具体的maven项目文件规划 这个规划可能适合于研发比较复杂的业务,这些业务有分布式和服务化的需要. 这个规划能够解决因为分布式和服务化要求而引起的项 ...
- JavaScript Patterns 5.9 method() Method
Advantage Avoid re-created instance method to this inside of the constructor. method() implementatio ...
- android中的万能适配器BaseAdapter的总结
有时候,列表不光会用来做显示用,我们同样可以在在上面添加按钮.添加按钮首先要写一个有按钮的xml文件,然后自然会想到用上面的方法定义一个适配器,然后将数据映射到布局文件上.但是事实并非这样,因为按钮是 ...
- mvn archetype:create和mvn archetype:generate
create is deprecated in maven 3.0.5 and beyond,在maven3.0.5以上版本舍弃了create,使用generate生成项目 before:mvn ar ...
- SQLServer查询锁表
查看被锁表: select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys. ...
- ADO.NET知识汇总
这又是一篇记录平常工作笔记的博客,无论是在排版还是解说上都不会有太多要求.同时这也是一篇不上博客园首页的博客,Just记录一些工作笔记. vSelect返回单个值 string connSQL = @ ...
- nginx有关.htaccess小结
可能很多朋友都常用nginx不支持.htaccess,只有apache才支持.htaccess文件,其实这是错误的看法nginx也是支持.hatccess的哦. 其实nginx和.htaccess一点 ...
- LNMP源码安装
1. mysql安装 # Preconfiguration setup shell > groupadd mysql shell > useradd -r -g mysql -s /bin ...
- [转]C#网络编程(订立协议和发送文件) - Part.4
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...
- Network Instructions in Linux
I will gradually learn some instructions about Network in Linux. First, here are somethings about IP ...