一、linux下查看文件的完整时间信息

1、Linux 下查看文件时,ls –l 缺省是不显示秒的:
1
2
3
4
# ls -l /etc/
total 0
-rw-r--r--.  1 root   root         16 Jan  5 09:43 adjtime
-rw-r--r--.  1 root   root       1518 Jun  7  2013 aliases


2、要显示秒(实际更精确),可以用 –full-time 参数:
1
2
3
4
# ls -l /etc/ --full-time
total 0
-rw-r--r--.  1 root   root         16 2018-01-05 09:43:59.352996227 +0800 adjtime
-rw-r--r--.  1 root   root       1518 2013-06-07 22:31:32.000000000 +0800 aliases


3、要显示更多信息,用 stat 命令:

1
2
3
4
5
6
7
8
9
10
# stat /etc/adjtime 
   File: ‘ /etc/adjtime
   Size: 16              Blocks: 8          IO Block: 4096   regular  file
Device: fd00h /64768d     Inode: 8483789     Links: 1
Access: (0644 /-rw-r--r-- )  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:adjtime_t:s0
Access: 2018-01-05 09:48:18.965219287 +0800
Modify: 2018-01-05 09:43:59.352996227 +0800
Change: 2018-01-05 09:43:59.352996227 +0800
  Birth: -


二、linux文件的三种时间属性

1、在Linux下,一个文件也有三种时间属性:

访问时间、修改时间、状态改动时间。


在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但

如果文件建立后就没有修改过,修改时间=建立时间;

如果文件建立后,状态就没有改动过,那么状态改动时间=建立时间;

如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过、读过、其状态是否变过,所以判断文件的建立时间基本上为不可能。


linux文件的三种时间属性分别为:

atime,为access time(访问时间)的缩写,显示的是文件中的数据最后被访问的时间,读一次这个文件的内容,这个时间就会更新,比如被系统的进程直接使用或者通过一些命令和脚本间接使用。(执行一些可执行文件、脚本)或对这个文件运用 more、cat等命令。ls、stat命令都不会修改文件的访问时间

mtime,为modify time(修改时间)的缩写,显示的是文件的内容被改变时的最后时间,比如用vi编辑时就会改变(也就是Block的内容),ls -l列出的时间就是这个时间。

ctime,为change time(状态改动时间)的缩写,显示的是文件的权限,拥有者,所属的组,链接数发生改变时的时间。当然当内容改变时,也会改变。(也就是Inode内容发生改变和Block内容发生改变时),通过chmod、chown命令修改一次文件属性,这个时间就会更新。


2、查看文件这三种时间的命令有:

2.1、ls命令

1
2
3
4
5
6
7
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls  -l  filename   列出文件的 mtime
字段           说明                                           例子                       ls(-l)
st_atime   文件数据的最后存取时间               read                       -u
st_mtime  文件数据的最后修改时间               write                       缺省
st_ctime   文件数据的最后更改时间               chown,chmod        -c


2.2、利用 stat命令可以查看到文件的三种时间:
1
2
3
4
5
6
7
8
9
10
11
12
13
# stat anaconda-ks.cfg 
   File: ‘anaconda-ks.cfg’
   Size: 1862            Blocks: 8          IO Block: 4096   regular  file
Device: fd00h /64768d     Inode: 16797762    Links: 1
Access(权限): (0600 /-rw------- )  Uid: (    0/    root)   Gid: (    0/    root)
Context(环境): system_u:object_r:admin_home_t:s0
Access(最近访问): 2018-01-05 09:44:50.567995756 +0800
Modify(最近更改): 2018-01-05 09:44:50.569995756 +0800
Change(最近改动): 2018-01-05 09:44:50.569995756 +0800
  Birth(创建时间): -
  
说明:Access访问时间。Modify修改时间。Change状态改动时间。可以stat *查看这个文件/目录所有文件的状态。
因为anaconda-ks.cfg文件没做过内容、属性的更改,也没读过这个文件,所以三者(访问时间、修改时间、状态改动时间)的时间是一致的,这时文件的修改时间与这三个时间是一样的,是没有疑问的。