理解 atime mtime ctime

来源:互联网 发布:telnet本地端口号不通 编辑:程序博客网 时间:2024/04/29 11:19
所有文件都有3个时间信息,保存在文件系统中
atime (Access time)
是文件最后一此读的时间 或者执行文件的时间
mtime (Modified time)
是文件最后一次写的时间(是在写入文件时随文件内容的更改而更改的)
ctime (Create time)
是i-node信息最后一次写的时间.
写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的

你使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息
這三個 time stamp 都放在 inode 中.
若只是读文件 那么只会修改atime (一个可执行文件执行也会改变它的atime)
一般 mtime修改, inode 就會改(使用touch -m 可以只改mtime而不改ctime), 既然 inode 改了, 那 ctime 也就跟著要改了.
之所以在 mount option 中使用 noatime, 就是不想 file system 做太多的修改, 而改善讀取效能.
mount 选项里面是没有noctime和nomtime的   
结论:
更改文件的内容即会更改 mtime 和 ctime , atime不一定被更改 如清空文件 >temp
ctime 可能会在 mtime 未发生任何变化时更改--在权限更改,但是文件内容没有变化的情况下  更改文件名时 也是ctime改变mtime不变
修改mtime一般都会改ctime  , 但是touch -tm time file 就只改modified time 而不改ctime

应用:
1> mount 使用选项noatime可以改善读取性能

2> 使用 ls 来对文件时间属性排序
ls -lc 列出文件的ctime  , 排序ls -ltc
ls -lu 列出文件的atime  , 排序ls -ltu
ls -l  所列出来的时间是mtime
列出文件的mtime并排序    ls -lt

3> find
找出一天之内被修改过的文件,使用ctime 因为有可能改变属性的操作 会改变ctime, 而不会改变mtime
shell > find ./ -ctime -1
如果要找出 前天和昨天之间ctime被改变的文件
使用touch 两个文件 然后在用find找   但是 touch 不能改变文件的ctime 只能改变mtime和atime
find 参数 newer比较的是mtime

假如现在是01122000   1月12号20点0分
shell > touch -mt 01112000 filename
shell > touch -mt 01102000 filename
[root@localhost test]# find ./ -newer t3dayago ! -newer tempnow
./tempnow
./tyesterday
./t2dayago
[root@localhost test]# find ./ -newer t3dayago
./
./tempnow
./tyesterday
./note
./t2dayago
阅读(1191) | 评论(0) | 转发(0) |
0

上一篇:mysql_connect() Fatal error: (转)

下一篇:tar 的使用和一些参数

相关热门文章
  • linux 常见服务端口
  • 什么是shell
  • linux socket的bug??
  • linux的线程是否受到了保护?...
  • 一个适用于windows和linux的抓...
  • 制作jffs2文件系统
  • make命令详解
  • nagios 进程突然增多一个...
  • 第七章 进程调度
  • ubuntu安装tftp服务器
给主人留下些什么吧!~~
原创粉丝点击