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

 更新时间:2023年08月27日 14:25:38   作者:LinuxPanda  
linux下文件有3个时间的,分别是atime,mtime,ctime,有些小伙伴对这3个时间还是比较迷茫和困惑的,所以小编为大家整理了下,希望对大家有所帮助

1.这三个time的含义

简名全名中文名含义
atimeaccess time访问时间文件中的数据库最后被访问的时间
mtimemodify time修改时间文件内容被修改的最后时间
ctimechange time变化时间文件的元数据发生变化。比如权限,所有者等

2.如何查看这3个time

[root@centos7 time]# pwd
/app/time
[root@centos7 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
[root@centos7 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: -
[root@centos7 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
[root@centos7 time]# ls -l --time=atime                             #列出文件的atime
total 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
[root@centos7 time]# ls -l --time=ctime                #列出ctime
total 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特性。这个随后在说,具体操作如下。

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

3.2读取文件测试

[root@centos7 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: -
[root@centos7 time]# cat issue                             #读取下
\S
Kernel \r on an \m
tty:   \l
hostname:   \n
time:    \t
[root@centos7 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修改文件测试

[root@centos7 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: -
[root@centos7 time]# echo "hello" >> issue                #修改文件
[root@centos7 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修改文件所有者测试

[root@centos7 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: -
[root@centos7 time]# chown zhaojiedi issue                              #修改权限
[root@centos7 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             | -           |
   +-------------------------------------------------+

到此这篇关于linux中文件的三种time(atime,mtime,ctime)的用法的文章就介绍到这了,更多相关linux time内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • linux命令切换目录的使用方法

    linux命令切换目录的使用方法

    切换目录的方式有很多种,最常用的莫过于cd 命令了,这里介绍四个命令pushd,popd,dirs,cd -的使用方法
    2014-01-01
  • Shell 批量进程判断是否存在

    Shell 批量进程判断是否存在

    本文主要介绍了Shell 批量进程判断是否存在,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • shell脚本中整数型变量自增(加1)的几种实现

    shell脚本中整数型变量自增(加1)的几种实现

    本文主要介绍了shell脚本中整数型变量自增(加1)的几种实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 3个备份系统文件并邮件发送的Shell脚本分享

    3个备份系统文件并邮件发送的Shell脚本分享

    这篇文章主要介绍了3个备份系统文件并邮件发送的Shell脚本分享,3个脚本分别对应了普通需求脚本、推荐脚本、大文件需求脚本,需要的朋友可以参考下
    2014-09-09
  • php-fpm开机自动启动Shell脚本

    php-fpm开机自动启动Shell脚本

    这篇文章主要介绍了php-fpm开机自动启动Shell脚本,本文脚本只是范例,其实你编译安装完成后,启动脚本已经生成在编译目录中,只需要复制出来用就可以了,需要的朋友可以参考下
    2015-06-06
  • Linux中sftp常用命令整理

    Linux中sftp常用命令整理

    sftp命令是一款交互式的文件传输程序,不仅对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。这篇文章整理了Linux中sftp的常用命令,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Ubuntu下定时提交代码到SVN服务器的Shell脚本分享

    Ubuntu下定时提交代码到SVN服务器的Shell脚本分享

    这篇文章主要介绍了Ubuntu下定时提交代码到SVN服务器的Shell脚本分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • linux脚本判断条件总结(必看)

    linux脚本判断条件总结(必看)

    下面小编就为大家带来一篇linux脚本判断条件总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • shell语言date的用法实例

    shell语言date的用法实例

    这篇文章主要介绍了shell语言关于date的一些用法,帮助大家更好的理解和学习shell语言,感兴趣的朋友可以了解下
    2020-11-11
  • Linux find命令及实用示例详解

    Linux find命令及实用示例详解

    Linux系统中的find命令是用于搜索文件和执行操作的强大工具,通过指定搜索路径和条件,用户可以查找特定文件名、类型、权限等,并执行如打印路径、删除文件等操作,文章通过多个示例,展示了find命令在实际应用中的用法,感兴趣的朋友一起看看吧
    2024-10-10

最新评论