每个文件在linux下面都会记录许多的时间参数, 其实是有三个主要的变动时间,那么三个时间的意义是什么呢?
modification time (mtime) : 当该文件的“内容数据”变更时,就会更新这个时间!内
容数据指的是文件的内容,而不是文件的属性或权限喔!
status time (ctime) : 当该文件的“状态 (status) ”改变时,就会更新这个时间,举
例来说,像是权限与属性被更改了,都会更新这个时间啊。
access time (atime) : 当“该文件的内容被取用”时,就会更新这个读取时间
(access) 。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的
atime 了
分号: 顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行。
&& : 顺序执行各条命令, 只有当前一个执行成功时候, 才执行后面的。
|| : 顺序执行各条命令, 只有当前面一个执行失败的时候, 才执行后面的。
[root@study ~]# date; ls -l /etc/man_db.conf ; ls -l --time=atime /etc/man_db.conf ; \
> ls -l --time=ctime /etc/man_db.conf # 这两行其实是同一行喔!用分号隔开
Tue Jun 16 00:43:17 CST 2015 # 目前的时间啊!
-rw-r--r--. 1 root root 5171 Jun 10 2014 /etc/man_db.conf # 在 2014/06/10 创建的内容(mtime)
-rw-r--r--. 1 root root 5171 Jun 15 23:46 /etc/man_db.conf # 在 2015/06/15 读取过内容(atime)
-rw-r--r--. 1 root root 5171 May 4 17:54 /etc/man_db.conf # 在 2015/05/04 更新过状态(ctime)
# 为了要让数据输出比较好看,所以鸟哥将三个指令同时依序执行,三个指令中间用分号 (;) 隔开即可。
在默认的情况下,ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次
被更动的时间。 至于鸟哥的系统是在 5 月 4 号的时候安装的,因此,这个文件被产生导致状
态被更动的时间就回溯到那个时间点了(ctime) ! 而还记得刚刚我们使用的范例当中,有使
用到man_db.conf这个文件啊,所以啊,他的 atime 就会变成刚刚使用的时间了!
文件的时间是很重要的,因为,如果文件的时间误判的话,可能会造成某些程序无法顺利的
运行。 OK!那么万一我发现了一个文件来自未来,该如何让该文件的时间变成“现在”的时刻
呢? 很简单啊!就用“touch”这个指令即可!
touch /etc/man_db.conf
touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
Tips 嘿嘿!不要怀疑系统时间会“来自未来”喔!很多时候会有这个问题的!举例来说在安装
过后系统时间可能会被改变! 因为*时区在国际标准时间“格林威治时间, GMT”的右边,所
以会比较早看到阳光,也就是说,*时间比GMT时间快了八小时! 如果安装行为不当,我
们的系统可能会有八小时快转,你的文件就有可能来自八小时后了。
至于某些情况下,由于BIOS的设置错误,导致系统时间跑到未来时间,并且你又创建了某些
文件。 等你将时间改回正确的时间时,该文件不就变成来自未来了?^_^
[root@study ~]# touch [-acdmt] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不创建新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
来自:鸟哥私房菜