在windows下,一个文件有:创建时间、修改时间、访问时间。
而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态改动时间

两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后,状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过、读过、其状态是否变过,所以判断文件的建立时间基本上能为不可能。
如何查一个文件的三个时间呢?
先用下面的命令来建立一个文件
# date && echo "this is file be used test time of file" >filetime.txt && ll --full-time filetime.txt
Tue Aug  4 15:13:44 HKT 2009
-rw-r--r--    1 root     root           39 2009-08-04 15:13:44.000000000 +0800 filetime.txt
通过stat filename.txt来查,如:
# stat filetime.txt 
  File: `filetime.txt'
  Size: 39              Blocks: 8          IO Block: 4096   Regular File
Device: 802h/2050d      Inode: 17          Links: 1    
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 15:13:44.000000000 +0800
Modify: 2009-08-04 15:13:44.000000000 +0800
Change: 2009-08-04 15:13:44.000000000 +0800

说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个目录所有文件的状态。
ctime=change time
atime=access time
mtime=modifiy time
因为这是一个新的文件(filetime.txt),没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。
1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。
2、修改时间,修改时间是文件内容最后一次被修改时间。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、状态改动时间。是该文件的i节点最后一次被修改的时间,通过chmod、chown命令修改一次文件属性,这个时间就会更新。
另个除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:
ls -lc filename 列出文件的 ctime (最后更改时间)
ls -lu filename 列出文件的 atime(最后存取时间)
ls -l filename 列出文件的 mtime (最后修改时间)
在linux中stat函数中,用st_atime表示文件数据最近的存取时间(last accessed time);用st_mtime表示文件数据最近的修改时间(last modified time);使用st_ctime表示文件i节点数据最近的修改时间(last i-node's status changed time)。
字段           说明                  例子           ls(-l)
 st_atime  文件数据的最后存取时间       read            -u
 st_mtime  文件数据的最后修改时间       write           缺省
 st_ctime  文件数据的最后更改时间       chown,chmod     -c
在linux系统中,系统把文件内容数据与i节点数据是分别存放的,i节点数据存放了文件权限与文件属主之类的数据。
另外,可以格式化输出文件的三种时间,如:
find . -name file -printf "%AY-%Am-%Ad %AH:%AM:%AS"
find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"
find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"
linux的ctime代表的是文件修改时间,如果文件被修改过就很难知道文件的创建时间,在某些特殊情况下,需要查看文件的创建时间,正常情况下查看文件的ctime是无法实现的。可以使用一个变通的方法来实现保留文件创建时间,但是同时也会牺牲一些其它特性。
可以在mount文件的时候使用参数-o noatime,来把系统更新atime的特性关闭。使用了noatime参数挂载后,在文件被修改后文件的atime是不会被改变的,使用stat查看到的atime就是文件的创建时间。
如:
# / sbin/mkfs -t ext3 /dev/ram10
# mount -t ext3 -o noatime /dev/loop0 /mnt/foo
# mount
/dev/ram10 on /mnt/foo type ext3 (rw,noatime)
# cd /mnt/foo
# touch filetime1.txt
# stat filetime1.txt 
  File: `filetime1.txt'
  Size: 0               Blocks: 0          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1    
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:51:32.000000000 +0800
Change: 2009-08-04 20:51:32.000000000 +0800
# echo foo.ok >> filetime1.txt 
[root@logs-bak foo]# stat filetime1.txt 
  File: `filetime1.txt'
  Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1    
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800
# cat filetime1.txt 
  foo.ok
#stat filetime1.txt 
  File: `filetime1.txt'
  Size: 14              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 12          Links: 1    
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:51:32.000000000 +0800
Modify: 2009-08-04 20:53:27.000000000 +0800
Change: 2009-08-04 20:53:27.000000000 +0800
# 通过以上实验可以看出文件的access time 是不变的。
接着向下多测试一下.
# vi filetime1.txt
# stat filetime1.txt 
  File: `filetime1.txt'
  Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1    
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:55:05.000000000 +0800
# chmod 777 filetime1.txt 
# stat filetime1.txt 
  File: `filetime1.txt'
  Size: 23              Blocks: 2          IO Block: 4096   Regular File
Device: 10ah/266d       Inode: 14          Links: 1    
Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2009-08-04 20:55:05.000000000 +0800
Modify: 2009-08-04 20:55:05.000000000 +0800
Change: 2009-08-04 20:57:36.000000000 +0800
可见,chmod后,Ctime的变化。
#########################################################
说到这里,大概大家也对在linux下文件的时间有所了解了吧!
那么以下的操作对文件的时间有什么影响呢?
操作                        atime        mtime       ctime
----------------------------------------------------------
mv
----------------------------------------------------------
cp
----------------------------------------------------------
touch
----------------------------------------------------------
cat/more/less
----------------------------------------------------------
ls
----------------------------------------------------------
chmod/chown
----------------------------------------------------------
ln
----------------------------------------------------------
echo
----------------------------------------------------------
vi
----------------------------------------------------------
(请大家测试完成这个表吧!!!!做完测试可以给我留言啊!)
##############################################################
另外,从kernel2.6.29开,还默认集成了一个relatime的属性。可能是因为在文件读操作很频繁的系统
中,atime更新所带来的开销很大,所以很多SA都在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,所以Linux就推出了一个relatime特性。
使用这个特性来挂装文件系统后,只有当mtime比atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已经是同一个东西了。所以这个选项就是为了实现对atime的兼容才推出的。并不是一个新的时间属性。使用方法就是通过mount -o relatime /dir来挂装目录。

转载于:https://www.cnblogs.com/langren1992/p/5435088.html

文件创建时间、访问时间、修改时间相关推荐

  1. golang修改文件的最后访问时间,最后修改时间

    简言 1. golang为我们提供了完善的文件操作库,例如os,ioutil等 2. 如果你还不知道如何获取目录下的所有文件,请参考笔者的这篇博客:https://blog.csdn.net/yzf2 ...

  2. golang修改文件的创建时间,最后访问时间,最后修改时间

    简言 1. golang为我们提供了完善的文件操作库,例如os,ioutil等 2. 如果你还不知道如何获取目录下的所有文件,请参考这篇博客:https://blog.csdn.net/yzf2795 ...

  3. 文件里的三个重要时间:access time(访问时间), modify time(修改时间), change time(状态改动时间)

    文件里的三个重要时间:access time(访问时间), modify time(修改时间), change time(状态改动时间),下面我将先介绍一下这个时间的修改与查看. touch 命令:t ...

  4. golang获取文件创建时间,最后访问时间,最后修改时间

    简言 1. golang为我们提供了完善的文件操作库,例如os,ioutil等 2. windows下,linux下获取文件时间信息的方式不太一样,具体方式请看下面的代码 3. 如果你还不知道如何获取 ...

  5. 如何用golang获取linux上文件的访问/创建/修改时间

    在linux上想获取文件的元信息,我们需要使用系统调用lstat或者stat. 在golang的os包里已经把stat封装成了Stat函数,使用它比使用syscall要方便不少. 这是os.Stat的 ...

  6. 获得各平台文件的访问 创建 修改时间

    创建各平台文件 xx_linux.go   xx_darwin.go  xx_windows.go "+build linux"必须在所有代码的前面,但这条注释之前可以有空行或其它 ...

  7. linux 修改文件日期,Linux 怎么修改系统和文件的创建时间和最终修改时间

    date -s 05/06/2013修改年月日为2013年5月6日, date -s 09:30:00设置系统时间为09:30:00, clock显示的为CMOS记录的时间,如果要以date的时间为准 ...

  8. win10服务器权限修改时间,win10系统修改时间显示没权限的解决方案

    有关win10系统修改时间显示没权限的操作方法想必大家有所耳闻.但是能够对win10系统修改时间显示没权限进行实际操作的人却不多.其实解决win10系统修改时间显示没权限的问题也不是难事,小编这里提示 ...

  9. 旅行青蛙服务器维护时间,旅行青蛙怎么调节时间 旅行青蛙修改时间攻略

    旅行青蛙怎么修改时间?在旅行青蛙手游中,玩家的小青蛙经常很久很久才会出去一趟,而且出去还要很久才能回来,很多玩家都想知道旅行青蛙手游中能不能通过调节时间来让小青蛙快速出门回家,下面就来一起看下旅行青蛙 ...

  10. Centos系统临时修改时间、永久修改时间

    临时修改时间 (系统重启,时间失效) date -s "20220127 19:55:00" //年月日 时:分:秒 永久修改时间(永久生效) 方法一 date -s " ...

最新文章

  1. 简单介绍Idea使用正则表达式批量替换字符串的方法
  2. ASP.NET之父谈ASP.NET AJAX
  3. python——聚类
  4. TF之GD:基于tensorflow框架搭建GD算法利用Fashion-MNIST数据集实现多分类预测(92%)
  5. SpringBoot高级-检索-Elasticsearch简介安装
  6. mysql 中函数如何转存_mysql 导入导出数据库以及函数、存储过程 【转】
  7. 前后端分离中后端常用的响应类
  8. 江苏职称计算机考试错做题,江苏省职称计算机考试word注意点.doc
  9. mysql merge查询速度_MySQL 查询优化之 Index Merge
  10. oracle中如何测试,Oracle数据库中如何正确的查看sql
  11. Jquery 网站保存信息提示消息实现,提示后自动消失
  12. 在Word2007文档中创建数学公式——使用Word公式编辑器
  13. 思科命令大全_【汇总】思科网络设备产品型号大全!超全解释~
  14. 数学建模-Logistic模型
  15. c语言四个人中有一个人是小偷,、甲,乙,丙,丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷?已知四个人中有一个人说假话...
  16. 闲聊linux中的input设备(4) 她一直默默地在背后支持着你
  17. access统计班级人数_Excel中怎么快速统计成绩表中分数段人数 - 卡饭网
  18. 2018年12月最新win101809教育版激永久激活密钥和方法
  19. 《机器学习的数学》出版了,彻底解决程序员学机器学习的数学问题
  20. 共建计算产业,共创数智未来

热门文章

  1. 卷积神经网络(CNN)之卷积层的实现
  2. 简单介绍WaitForSingleObject / WaitForMultipleObjects
  3. NSX发布Guest Introspection虚拟机时,主机报错的解决方法
  4. 掌握 Ajax,第 1 部分: Ajax 入门简介
  5. 使用 JQueryElement ResponseProgress 显示页面执行进度
  6. 读书:我编程我快乐(一.4)
  7. Web后端学习笔记Flask(2)模板
  8. 素数和 mooc 翁恺
  9. python数值积分_python实现数值积分的Simpson方法实例分析
  10. Selenium UI自动化测试(一)环境配置