在windows下,一个文件有:创建时间、修改时间、访问时间。
而
在Linux下,一个文件也有三种时间,分别是:
访问时间、修改时间、状态改动时间
。
在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。
与文件相关的几个时间:
1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间。
2、修改时间,是文件内容最后一次被修改时间。这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。
3、状态改动时间。通过chmod、chown命令修改一次文件属性(是该文件的i节点最后一次被修改的时间),这个时间就会更新。
查看文件的详细的状态、准确的修改时间等,可以通过stat命令文件名。
举例说明:
# stat out.txt
File: "out.txt"
Size: 2918 Blocks: 8 IO Block: 4096 普通文件
Device: 803h/2051d Inode: 3022338 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-07-18 03:29:28.000000000 +0800
Modify: 2017-07-18 03:28:54.000000000 +0800
Change: 2017-07-18 03:28:54.000000000 +0800
File: "out.txt"
Size: 2918 Blocks: 8 IO Block: 4096 普通文件
Device: 803h/2051d Inode: 3022338 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-07-18 03:29:28.000000000 +0800
Modify: 2017-07-18 03:28:54.000000000 +0800
Change: 2017-07-18 03:28:54.000000000 +0800
说明:Access访问时间。Modify修改时间。Change状态改变时间。
ctime=change time
atime=access time
mtime=modifiy time
可以stat *查看这个目录所有文件的状态
除了可以通过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节点数据存放了文件权限与文件属主之类的数据。