文章目录

  • 改变和修改的区别
  • ctime
  • mtime
  • atime
  • 查看文件时间
  • 关于 relatime

改变和修改的区别

改变和修改之间的区别在于是改变文件的属性还是改变文件的内容。如果有人说 chmod a-w myfile(删除所有用户对文件 myfile 的写权限),那么这叫改变;如果有人说 echo foo >> myfile(将文件 foo 的内容追加输出到文件 myfile 中。>> 叫追加输出重定向符号),那么这叫修改。改变是文件的索引节点发生了改变,修改是文本的内容发生了变化。

ctime

change time(也有人说是 status time),改变时间,变更时间,最后一次改变文件的时间。指的是文件的元数据,状态最后被变更的时间。改变文件的元数据,即:属性。例如,更改文件的 inode、权限、所属组等。

ctime 文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容

发生改变时)

ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。

更改文件的内容就一定会更改 mtime 和 ctime,mtime 改变,ctime 一定会改变,但是文件的 ctime 可能会在 mtime 未发生变化时更改,也就是说 ctime 改变,mtime 未必改变。例如,文件的权限更改,但是文件内容没有变化的情况下,ctime 改变,mtime 不改变。

atime、mtime、ctime 都放在 inode 中,若 mtime,atime 修改,inode 就一定改变,既然 inode 改变了,那 ctime 也就跟着要改变了。

mtime

modify time,modified time,modification time,修改时间,最后一次修改文件的时间,指的是文件内容最后被修改的时间。
mtime 是在写入文件时随文件内容的更改而更改。

比如用 vi 编辑时就会被改变。(也就是Block的内容)

atime

access time,访问时间,文件最后一次被访问的时间,或者叫文件最后被读取的时间,因此阅读一个文件会更新它的访问时间

atime 读取文件或者执行文件时会更改。

atime 不一定在访问文件之后被修改,因为使用 ext3 文件系统的时候,如果在 mount(挂载) 的时候使用了 noatime 参数那么就不会更新 atime 的信息。我们知道 atime、mtime、ctime 都放在 inode 中,若 mtime,atime 修改,inode 就一定改变,既然 inode 改变了,那 ctime 也就跟着要改变了。之所以在 mount option 中使用 noatime, 就是不想 file system 做太多的修改,从而改善读取效率。

查看文件时间

(一)使用命令 stat 可以查看文件的所有时间属性,如下所示:

[root@htlwk0001host ~]# stat httpd文件:httpd大小:92           块:0          IO 块:4096   目录
设备:fd01h/64769d  Inode:34185529    硬链接:5
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2021-04-23 22:05:47.104315111 +0800 atime
最近更改:2020-08-15 12:39:32.000000000 +0800 mtime
最近改动:2020-08-23 14:15:51.903328888 +0800 ctime
创建时间:-

(二)使用命令 ls 查看文件的时间属性

ls -l file,查看文件修改时间:

[root@htlwk0001host ~]# ls -l install.php
-rw-r--r-- 1 root root 1295 8月  23 2020 install.php

2020年8月23日,这是文件的 mtime。

ls -lc file,查看文件状态改动时间:

[root@htlwk0001host ~]# ls -lc install.php
-rw-r--r-- 1 root root 1295 8月  23 2020 install.php

ls -lu file,查看文件访问时间:

[root@htlwk0001host ~]# ls -lu install.php
-rw-r--r-- 1 root root 1295 8月  23 2020 install.php

ls -l --time=atime,查看文件访问时间:

[root@htlwk0001host ~]# ls -l --time=atime
总用量 1284196
-rw-r--r-- 1 root  root        4023 12月 27 14:58 4946737_test.dpqyw.com_nginx.zip
-rw-r--r-- 1 root  root       15670 1月  16 13:21 aa4.jpg
-rw-r--r-- 1 root  root        2151 1月  16 13:21 Demo1.class

ls -l --time=ctime 查看文件的改变时间:

[root@htlwk0001host ~]# ls -l --time=ctime
总用量 1284196
-rw-r--r-- 1 root  root        4023 12月 27 14:58 4946737_test.dpqyw.com_nginx.zip
-rw-r--r-- 1 root  root       15670 1月  16 13:21 aa4.jpg
-rw-r--r-- 1 root  root        2151 1月  16 13:21 Demo1.class
-rw-r--r-- 1 root  root        2227 1月  16 13:21 Demo1.java
drwxr-xr-x 5 root  root          92 8月  23 2020 httpd

关于 relatime

如果每次访问文件都会更新 atime,这是很耗时的,尤其在 web 服务器上,大量用户只是访问 html 页面,完全没有必要修改 atime。从kernel 2.6.29 开始,文件系统默认集成了一个 relatime 的属性,这样就不会每次访问文件时都改变 atime,而是满足一定条件才会更改 atime。

可能是因为在文件读操作很频繁的系统中,atime 更新所带来的开销很大,所以很多 SA(系统管理员)都在挂装文件系统的时候使用noatime 属性来停止更新 atime。但是有些程序需要根据 atime 进行一些判断和操作,所以 Linux 就推出了一个relatime特性。使用这个特性来挂装文件系统后,只有当 mtime 比 atime 更新或者上次访问时间是在 1 天前才会更新 atime。使用方法就是通过 mount -o relatime /dir 来挂装目录。

Linux 中 ctime,mtime,atime 的区别相关推荐

  1. 转 微博 linux中ctime,mtime,atime的区别

    http://blog.sina.com.cn/s/blog_67178440010101gr.html 当你同熟练的UNIX用户进行交谈时,你经常会听到他们傲慢地讲出术语"改变时间(cha ...

  2. linux中ctime,mtime,atime的区别

    当你同熟练的UNIX用户进行交谈时,你经常会听到他们傲慢地讲出术语"改变时间(change time)"和"修改时间(modification time)".对 ...

  3. linux中系统调用和库函数的区别

    linux中系统调用和库函数的区别 2013-05-03 22:18:20 分类: LINUX 首先,要说一下两者的概念: 系统调用 :是操作系统为用户态运行的进程和硬件设备(如CPU.磁盘.打印机等 ...

  4. Linux 中su 与su - 的区别

    Linux 中su 与su - 的区别 一.区别 Linux 中切换用户的命令是 su 或 su - . su命令和 su - 命令最大的本质区别就是: 前者只切换了root身份 , 但是shell环 ...

  5. Linux中su与su - 的区别

    Linux中su与su - 的区别 最近在学习任务调度执行,其中我要在轮子组下的一个用户,使用at并重定向,发现没有权限 下面是使用su [root@alytest ~]# su jack [jack ...

  6. Linux中EXT3与EXT4的区别!

    在Linux系统中,日志文件系统分为很多种类型,其中比较典型的是:ext3.ext4.xfs等,那么Linux中EXT3与EXT4的区别有哪些?以下是详细的内容介绍. Linux Kernel自2.6 ...

  7. linux中hda和sda的区别

    linux中hda和sda的区别 hda一般是指IDE接口的硬盘,hda一般指第一块硬盘,类似的有hdb,hdc等 sda一般是指SATA接口的硬盘,sda一般指第一块硬盘,类似的有sdb,sdc等 ...

  8. Linux中线程和进程的区别

    Linux中线程和进程的区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位.例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括 ...

  9. linux mkdir -m权限,Linux中mkdir和touch命令区别

    一.目的 本文将介绍linux下新建文件或文件夹.删除文件或文件夹命令.         touch能够新建文件,mkdir用来新建文件夹.rm用来删除文件或文件夹.         本文将选取ubu ...

最新文章

  1. java maven centos7 yum安装
  2. DataWhale sklearn学习笔记(一)
  3. 4、表单和高级选择器
  4. react学习(3)----不能在该位置用setstate
  5. geoserver native JAI error 问题解决方法
  6. java ntpudpclient_使用NTP获取网络时间-----java
  7. 【转】模块(configparser+shutil+logging)
  8. AAAI'22 | 基于情感分析的开放域对话系统
  9. 网络不稳定的原因_原来网络不稳定,也有可能是这个原因造成的!
  10. 基于MATLAB的有源三相滤波器的设计,基于MATLAB的电力系统有源滤波器设计
  11. 视频教程-2020年软考网络工程师基础知识历年真题详解软考视频教程-软考
  12. 02、DHT11温湿度传感器
  13. iMazing中IPA文件的介绍与管理
  14. Linux内核延迟写机制学习
  15. 视觉的目的是什么?从监督学习到对比学习,回顾CV发展史
  16. CISP和等保什么区别?
  17. html画星空,html5 canvas绘制全屏的星空背景动画特效
  18. 减半技术实现求a的n次幂
  19. stream根据某个字段去重(对象的某个字段去重)
  20. 电脑C盘满了有什么影响?如何正确清理C盘?

热门文章

  1. azure blob_使用Azure Blob存储托管Maven工件
  2. netbeans 9_NetBeans 9抢先体验
  3. threejs 影子属性_影子场vs.属性访问器接口第2轮
  4. 弹性架构_实践中的弹性基础架构
  5. docker和java容器_使用Docker容器和Java EE进行持续交付
  6. 为什么awt_为AWT的机器人创建DSL
  7. openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
  8. Elasticsearch SQL
  9. javafx透明边框_JavaFX技巧6:使用透明颜色
  10. API测试和自动化101:基本指南