通过ls这个命令,我们可以了解到文件的许多参数。在Linux下,关于文件的时间参数有三个,这三个参数的主要用途和意义如下:
modification time (mtime):
当该文件的内容数据变更时,就会升级这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。
status time (ctime):
当该文件的状态 (status)改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间。
access time (atime):
当该文件的内容被取用时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config ,就会升级该文件的 atime 了。
举例来说,我们可以查看/etc/man.config这个文件时间:
[root@lmode ~]# ls -l /etc/man.config
-rw-r--r--. 1 root root 4940 Apr 3 2012 /etc/man.config
[root@lmode ~]# ls -l --time=atime /etc/man.config
-rw-r--r--. 1 root root 4940 Nov 23 04:43 /etc/man.config
[root@lmode ~]# ls -l --time=ctime /etc/man.config
-rw-r--r--. 1 root root 4940 Dec 17 2012 /etc/man.config
从上面的例子可以看到,在默认情况下,ls显示出来的是该文件的mtime,就是这个文件内容上次被更动的时间。
文件的时间是很重要的,因为,如果文件的时间误判的话,可能会造成某些程序无法顺利的运行。有些时候,我们可能发现某个文件的时间快于系统时间(某些情况下,系统时间跑快,然后又创建了某些文件,等时间调回来后导致文件时间快于系统时间),这个时候可以用touch命令来修订时间。
touch命令参数和用法
[root@lmode ~]# touch [-acdmt] 文件
选项与参数:
-a :仅修订 access time;
-c :仅修改文件的时间,若该文件不存在则不创建新文件;
-d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
-m :仅修改 mtime ;
-t :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]
实例1:
[root@lmode ~]#cd /tmp
[root@lmode tmp]# touch test
[root@lmode tmp]# ls -l test
-rw-r--r-- 1 root root 0 Nov 24 22:59 test
从上面可以看到,test这个文件大小是0。如果touch后面有接文件,则该文件的三个时间(atime/ctime/mtime)都会升级为目前的时间。如果该文件不存在,则会主动创建一个空的文件。
实例2:将 ~/.bashrc 复制成为 bashrc
[root@lmode tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Oct 27 14:27 bashrc
-rw-r--r-- 1 root root 176 Nov 24 22:32 bashrc
-rw-r--r-- 1 root root 176 Nov 24 23:08 bashrc
我们可以发现数据的内容与属性是被复制过来的,因此文件内容时间(mtime)与原本文件相同。但是由于这个文件是刚刚被创建的,因此状态(ctime)与读取时间就便呈现在的时间。
实例3:修改实例2的 bashrc 文件,将日期调整为两天前
[root@lmode tmp]# touch -d "2 days ago" bashrc
[root@lmode tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Nov 22 23:19 bashrc
-rw-r--r-- 1 root root 176 Nov 22 23:19 bashrc
-rw-r--r-- 1 root root 176 Nov 24 23:19 bashrc
范例4:将上个范例的 bashrc 日期改为 2014/11/24 11:32
[root@lmode tmp]# touch -t 1411241132 bashrc
[root@lmode tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
-rw-r--r-- 1 root root 176 Nov 24 2014 bashrc
-rw-r--r-- 1 root root 176 Nov 24 2014 bashrc
-rw-r--r-- 1 root root 176 Nov 24 23:25 bashrc
可以看到,日期在 atime 与 mtime 都改变了,但是 ctime 则是记录目前的时间。透过 touch 这个命令,我们可以轻易的修订文件的日期与时间。并且也可以创建一个空的文件!
不过,要注意的是,即使我们复制一个文件时,复制所有的属性,但也没有办法复制 ctime 这个属性的。ctime 可以记录这个文件最近的状态 (status) 被改变的时间。无论如何,还是要告知大家我们平时看的文件属性中,比较重要的还是属于那个 mtime。我们关心的常常是这个文件的内容是什么时候被更改了。
ppt.cc/fVjECx ppt.cc/fEnHsx ppt.cc/fRZTnx ppt.cc/fSZ3cx ppt.cc/fLOuCx ppt.cc/fE9Nux ppt.cc/fL5Kyx ppt.cc/fIr1ax ppt.cc/f71Yqx tecmint.com linuxcool.com linux.die.net linux.it.net.cn ostechnix.com unix.com ubuntugeek.com runoob.com man.linuxde.net bit.ly/2EzoUDo bit.ly/2tW6eYT bit.ly/2X6vadl bit.ly/2viLpHU linuxprobe.com linuxtechi.com howtoforge.com linuxstory.org systutorials.com ghacks.net linuxopsys.com v.gd/2P9wTx v.gd/FtfpqE v.gd/eMfHsm v.gd/Ub7mqv v.gd/RReVk0 v.gd/vS3uTI v.gd/4Zxmba
Total Pageviews
Tuesday, 30 July 2024
Linux下,文件的修改时间
Labels:
linux
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment