linux stat命令、inode内容--ctime,mtime,atime的区别
1、[root@localhost tmp]# stat 1.txt
File: `1.txt'
Size: 8 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 196617 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-10-20 21:43:54.000000000 +0800
Modify: 2013-10-20 21:35:42.000000000 +0800
Change: 2013-10-20 21:35:42.000000000 +0800
2、stat显示出inode的内容--inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
3、IO Block:逻辑块的大小为4096个字节
Blocks:物理最小块是512,而IO Block为4096,所以这里就占用了8个物理块的意思
Access:atime
Modify:mtime,修改时间,注意这个不是建立时间,m不是make的意思
Change:ctime,改变时间
4、通过ls怎么查询这三个时间?
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime --ll默认显示的就是这个时间
5、这三个时间不好区别,但必须区别好,因为很多应用会考虑到这些时间,比如在做同步备份时,会判断时间,大于上次备份时间的文件要再次同步等,或在查找文件何时变化,何时被黑客入侵,都会用到这个。
atime:访问时间,读取文件或者执行文件时会更改,命令如cat,vi
mtime:修改时间,文件的内容被改变时,就会更改,如vi
ctime:改变时间,文件的标签如属性、用户、用户组、权限、内容等被改变时,就会更改,如chmod,chown,vi
6、文件的时间戳(timestamp)是inode的内容之一,从inode来理解:ctime指inode上一次改变的时间,mtime指文件内容上一次修改的时间,atime指文件上一次打开的时间。
7、atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息,就是不想filesystem做太多的修改,而改善读取效能。