linux中文件的三种time(atime,mtime,ctime)

linux下文件有3个时间的,分别是atime,mtime,ctime。有些博友对这3个时间还是比较迷茫和困惑的,我整理了下,写下来希望对博友们有所帮助。

1 这三个time的含义

    1. 简名 全名 中文名 含义
      atime access time 访问时间 文件中的数据库最后被访问的时间
      mtime modify time 修改时间 文件内容被修改的最后时间
      ctime change time 变化时间 文件的元数据发生变化。比如权限,所有者等

2 如何查看这3个time

[[email protected] time]# pwd
/app/time
[[email protected] time]# ll
total 8
-rw-------. 1 root root 1933 Nov 11 08:14 anaconda-ks.cfg
-rw-r--r--. 1 root root   59 Nov 11 08:15 issue
[[email protected] time]# stat issue
  File: ‘issue’
  Size: 59            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 08:15:05.650986739 +0800
Modify: 2017-11-11 08:15:05.650986739 +0800
Change: 2017-11-11 08:15:05.650986739 +0800
 Birth: -[[email protected] time]# ls -l                               #默认的ls -l显示的是mtime     total 8-rw-------. 1 root      root 1933 Nov 11 08:14 anaconda-ks.cfg-rw-r--r--. 1 zhaojiedi root   71 Nov 11 09:05 issue[[email protected] time]# ls -lc                              #列出文件的atimetotal 8-rw-------. 1 root      root 1933 Nov 11 08:14 anaconda-ks.cfg-rw-r--r--. 1 zhaojiedi root   71 Nov 11 09:12 issue[[email protected] time]# ls -lu                  #列出ctimetotal 8-rw-------. 1 root      root 1933 Nov 11 08:14 anaconda-ks.cfg-rw-r--r--. 1 zhaojiedi root   71 Nov 11 09:03 issue

3 三个time的测试

3.1 测试准备工作

测试前,我们需要先关闭文件系统的relatime特性。这个随后在说,具体操作如下。

[[email protected] time]# mount -o remount,strictatime /app  # 重新挂载我们的/app,并修改文件系统工作在严格atime上,也就是不启用了默认的relatime支持。[[email protected] time]# mount |grep /app                   #查看我们的修改/dev/sda5 on /app type ext4 (rw,seclabel,data=ordered)

3.2 读取文件测试

[[email protected] time]# stat issue                             #先获取3个时间
  File: ‘issue’
  Size: 59            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 08:15:05.650986739 +0800
Modify: 2017-11-11 08:15:05.650986739 +0800
Change: 2017-11-11 08:15:05.650986739 +0800
 Birth: -
[[email protected] time]# cat issue                             #读取下
\S
Kernel \r on an \m
tty:   \l
hostname:   \n
time:    \t
[[email protected] time]# stat issue                #再次查看3个时间
  File: ‘issue’
  Size: 59            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 08:57:40.858948780 +0800
Modify: 2017-11-11 08:15:05.650986739 +0800
Change: 2017-11-11 08:15:05.650986739 +0800
 Birth: -

通过上面的分析,我们可以看出来,在使用cat读取文件后,文件的atime发生了改变。其他的没有改变。

3.3 修改文件测试

[[email protected] time]# stat issue                           #先获取下3个time
  File: ‘issue’
  Size: 65            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 09:03:49.080931626 +0800
Modify: 2017-11-11 09:04:16.881930331 +0800
Change: 2017-11-11 09:04:16.881930331 +0800
 Birth: -
[[email protected] time]# echo "hello" >> issue                #修改文件
[[email protected] time]# stat issue                 #再次查看三个time
  File: ‘issue’
  Size: 71            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 09:03:49.080931626 +0800
Modify: 2017-11-11 09:05:07.775927960 +0800
Change: 2017-11-11 09:05:07.775927960 +0800
 Birth: -

通过上面的实验,我们可以看出来,写文件操作不会导致atime(访问时间)的修改,但是mtime和ctime会发生修改。mtime修改了我们可以理解的,毕竟我们修改了文件的,

那为何ctime也修改了呢, 仔细可以发现我们文件的大小发生了变化,也就是元数据发生了变化,所以ctime也是要变化的。

3.4 修改文件所有者测试

[[email protected] time]# stat issue                                          #先查看下3个time
  File: ‘issue’
  Size: 71            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 09:03:49.080931626 +0800
Modify: 2017-11-11 09:05:07.775927960 +0800
Change: 2017-11-11 09:05:07.775927960 +0800
 Birth: -
[[email protected] time]# chown zhaojiedi issue                              #修改权限
[[email protected] time]# stat issue                         #再次查看3个时间
  File: ‘issue’
  Size: 71            Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d    Inode: 261123      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/zhaojiedi)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2017-11-11 09:03:49.080931626 +0800
Modify: 2017-11-11 09:05:07.775927960 +0800
Change: 2017-11-11 09:12:42.076906795 +0800
 Birth: -

通过上面的实验,我们可以看出来,修改了权限后,文件ctime发生了变化。

4 说说relatime

常用命令对三个time的修改情况我们上面的测试,可以看出来,每次访问文件都会更新atime,这是很耗时的,尤其在web服务器上,大量用户只是访问html页面,完全没有必要修改atime。

从kernel2.6.29开始,文件系统默认集成了一个relatime的属性。

那么啥时候更新atime呢? 有2种情况会更新atime,第一种是mtime比atime新,第二种是上次访问是1天前的了。

5 常用命令对三个time的修改情况

上面我们做了3个测试,我们也对atime,mtime,ctime有了一定的了解。网上有人已经做了好多测试如下表。

+-------------------------------------------------+
   |               |  timestamps marked for update   |
   |    syscall    |---------------------------------|
   |               |       file        | parent dir  |
   |---------------+-------------------+-------------|
   | [2]chdir      |                   |             |
   |---------------| -                 | -           |
   | [3]fchdir     |                   |             |
   |---------------+-------------------+-------------|
   | [4]chmod      |                   |             |
   |---------------| ctime             | -           |
   | [5]fchmod     |                   |             |
   |---------------+-------------------+-------------|
   | [6]chown      |                   |             |
   |---------------|                   |             |
   | [7]fchown     | ctime             | -           |
   |---------------|                   |             |
   | [8]lchown     |                   |             |
   |---------------+-------------------+-------------|
   | [9]close      | -                 | -           |
   |---------------+-------------------+-------------|
   | [10]creat     | atime,ctime,mtime | ctime,mtime |
   |---------------+-------------------+-------------|
   | [11]execve    | atime             | -           |
   |---------------+-------------------+-------------|
   | [12]fcntl     | -                 | -           |
   |---------------+-------------------+-------------|
   | [13]ftruncate |                   |             |
   |---------------| ctime,mtime       | -           |
   | [14]truncate  |                   |             |
   |---------------+-------------------+-------------|
   | [15]fstat     |                   |             |
   |---------------|                   |             |
   | [16]stat      | -                 | -           |
   |---------------|                   |             |
   | [17]lstat     |                   |             |
   |---------------+-------------------+-------------|
   | [18]fsync     |                   |             |
   |---------------| -                 | -           |
   | [19]fdatasync |                   |             |
   |---------------+-------------------+-------------|
   | [20]link      | ctime             | ctime,mtime |
   |---------------+-------------------+-------------|
   | [21]lseek     | -                 | -           |
   |---------------+-------------------+-------------|
   | [22]mknod     | atime,ctime,mtime | ctime,mtime |
   |---------------+-------------------+-------------|
   | [23]mkdir     | atime,ctime,mtime | ctime,mtime |
   |---------------+-------------------+-------------|
   | [24]mmap      | *                 | -           |
   |---------------+-------------------+-------------|
   | [25]munmap    | -                 | -           |
   |---------------+-------------------+-------------|
   | [26]msync     | *                 | -           |
   |---------------+-------------------+-------------|
   | [27]open      | *                 | *           |
   |---------------+-------------------+-------------|
   | [28]pread     |                   |             |
   |---------------|                   |             |
   | [29]read      | atime             | -           |
   |---------------|                   |             |
   | [30]readv     |                   |             |
   |---------------+-------------------+-------------|
   | [31]pwrite    |                   |             |
   |---------------|                   |             |
   | [32]write     | ctime,mtime       | -           |
   |---------------|                   |             |
   | [33]writev    |                   |             |
   |---------------+-------------------+-------------|
   | [34]rename    | implementation    | ctime,mtime |
   |---------------+-------------------+-------------|
   | [35]rmdir     | -                 | ctime,mtime |
   |---------------+-------------------+-------------|
   | [36]readlink  | *                 | -           |
   |---------------+-------------------+-------------|
   | [37]readdir   | atime             | -           |
   |---------------+-------------------+-------------|
   | readahead     | ?                 | ?           |
   |---------------+-------------------+-------------|
   | [38]symlink   | *                 | *           |
   |---------------+-------------------+-------------|
   | sendfile      | ?                 | ?           |
   |---------------+-------------------+-------------|
   | [39]unlink    | -                 | ctime,mtime |
   |---------------+-------------------+-------------|
   | [40]utime     | ctime             | -           |
   +-------------------------------------------------+ 

6 参考文章

http://blog.csdn.net/wodeqingtian1234/article/details/53975744

http://blog.chinaunix.net/uid-24500107-id-2602881.html

http://www.jianshu.com/p/781e2c144367

时间: 2024-10-23 03:45:15

linux中文件的三种time(atime,mtime,ctime)的相关文章

linux中文件的三种时间

Linux 中文件的三种时间 文件的三种时间: 1.        mtime 文件的修改时间 文件的内容发生改变.包括文件中空格数目.字符的变动再复原等这些看上去并不影响有效数据内容的操作. 有意的改变时间戳.Eg:使用touch –m –t 2016666666666fileName这样的命令故意改变mtime. 2.        ctime 文件的改变时间 文件的"属性"改变.Eg:文件的权限.属主.属组等. mtime发生改变和人为的改变atime的情况,Eg:touch –

Linux中vim的三种模式以及基本命令

在Linux中vim的三种模式分别为:命令模式.末行模式.编辑模式.以下是三者的关系图: 三种模式的彼此切换: 命令模式是vim中的默认模式. 命令模式切换至末行模式: 使用英文冒号(:). 末行模式切换至命令模式: 按一下esc 或者 两下esc 或者 删除末行的全部命令. 命令模式切换至编辑模式: 按键 i 或者 a. 编辑模式切回命令模式: 按下esc. 其中,末行模式 和 编辑模式 之间,不能直接切换,必须切换到命令模式,再进行切换. 接下来细化到每个模式下的各种命令操作: 一.末行模式

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后, 状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过.读过.其状态是否 变过,所以判断文件的建立时间基本上能为不可能. 如何查一个文

Linux中文本编辑器三种工作模式切换及vi编辑器三种工作模式下命令详解

文本编辑器的作用 创建或修改文本文件维护Linux系统中的各种配置文件Linux中最常用的文本编辑器Linux中最常用的文本编辑器vi:类UNIX操作系统的默认文本编辑器vim:vim时vi文本编辑器(一般简称vi编辑器)的增强版本 vi编辑器的工作模式 三种工作模式命令模式.输入模式.末行模式不同模式之间的切换 命令模式的基本操作3-1 光标移动方向键移动(↑.↓.←.→) 功能:上下左右移动Page Down或Ctrl+F 功能:向下翻动一整页的内容Page Up或Ctrl+B 功能:向上翻

linux中vim编辑器三种模式及常用命令的使用

Linux命令经常使用才会烂熟于心 命令行模式: 移动光标: 向下左右箭头可以移动光标: 将光标移动到行尾:$; 将光标移动到行头:^: 将光标移动到页尾:shift+g; 将光标移动到页头:1+shift+g; 移动到目标行:n+shift+g; 快速向左右移动光标:ctrl+←/→键: 向左或者向右移动n个字符:n+←/→键: ----------------------- 删除: 删除光标所在行:dd; 删除光标所在行及之后的n-1行:dnd: 删除一个字母:x (相当于是del): 删除

Linux - 文件的三种时间之atime、ctime、mtime的区别和简单用法

在Linux中,文件或者目录中有三个时间属性 atime ctime mtime 简名 全名 中文 作用 atime Access Time 访问时间 最后一次访问文件(读取或执行)的时间 ctime Change Time 变化时间 最后一次改变文件(属性或权限)或者目录(属性或权限)的时间 mtime Modify Time 修改时间 最后一次修改文件(内容)或者目录(内容)的时间 如何查看atime.ctime.mtime stat filename 什么命令会修改atime.ctime.

linux下find命令和文件的三种时间

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 1.命令参数:     pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.   -print: find命令将匹配的文件输出到标准输出

ubuntu/linux mint 创建proc文件的三种方法(二)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方

ubuntu/linux mint 创建proc文件的三种方法(四)

在做内核驱动开发的时候,可以使用/proc下的文件,获取相应的信息,以便调试. 大多数/proc下的文件是只读的,但为了示例的完整性,都提供了写方法. 方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危险): 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁): 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比较完整): 示例四:在proc文件中使用内核链表的一个示例(用的方