Linux的多个time属性

supermxb 8年前
     Linux文件的change time和Modify time很多人很容易搞混淆,有些Unix参考书都会写错(特别是翻译的),将ctime理解为create time(创建时间),那是瞎说的,Linux文件系统不会记录create time的,除非文件创建过后,没modify,没change,那么文件的创建时间和modify时间及change时间相同。    <br />    <center>     <table class="ke-zeroborder" border="0" cellspacing="0" cellpadding="0" width="90%">      <tbody>       <tr>        <td><b>QUOTE:</b></td>       </tr>      </tbody>     </table>     <table style="border-bottom:#808080 1px solid;border-left:#808080 1px solid;border-top:#808080 1px solid;border-right:#808080 1px solid;" class="ke-zeroborder" border="0" cellspacing="1" cellpadding="10" width="90%">      <tbody>       <tr>        <td style="word-break:break-all;" bgcolor="#ffffff" width="100%">[root@test200 temp]# stat libnids-1.16.tar.gz <br /> File: `libnids-1.16.tar.gz'<br /> Size: 72309 Blocks: 152 IO Block: 4096 regular file<br /> Device: 302h/770d Inode: 4113144 Links: 1<br /> Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)<br /> Access: 2008-05-27 15:13:03.000000000 +0800<br /> Modify: 2004-03-10 12:25:09.000000000 +0800<br /> Change: 2008-05-27 14:18:18.000000000 +0800</td>       </tr>      </tbody>     </table>    </center>    <br /> access time是文档最后一次被读取的时间。因此阅读一个文档会更新它的access时间,但它的modify时间和change时间并没有变化。cat、more 、less、grep、sed、tail、head这些命令都会修改文件的access时间。    <br />    <br /> change time是文档的索引节点(inode)发生了改变(比如位置、用户属性、组属性等);    <br />    <br /> modify time是文本本身的内容发生了变化。[文档的modify时间也叫时间戳(timestamp).]    <br />    <center>     <table class="ke-zeroborder" border="0" cellspacing="0" cellpadding="0" width="90%">      <tbody>       <tr>        <td><b>QUOTE:</b></td>       </tr>      </tbody>     </table>     <table style="border-bottom:#808080 1px solid;border-left:#808080 1px solid;border-top:#808080 1px solid;border-right:#808080 1px solid;" class="ke-zeroborder" border="0" cellspacing="1" cellpadding="10" width="90%">      <tbody>       <tr>        <td style="word-break:break-all;" bgcolor="#ffffff" width="100%">st_atime <br /> Time when file data was last accessed. Changed by the <br /> following functions: creat(), mknod(), pipe(), <br /> utime(2), and read(2). <br /> <br /> st_mtime <br /> Time when data was last modified. Changed by the fol- <br /> lowing functions: creat(), mknod(), pipe(), utime(), <br /> and write(2). <br /> <br /> st_ctime <br /> Time when file status was last changed. time of last modification of file status information.Changed by the <br /> following functions: chmod(), chown(), creat(), <br /> link(2), mknod(), pipe(), unlink(2), utime(), and <br /> write().</td>       </tr>      </tbody>     </table>    </center>    <br /> chmod, chown,create,mv等动作会将Linux文件的change time修改为系统当前时间    <br />    <br /> ls命令看到的是modify time    <br />    <br /> 用wget等工具下载的文件,cahnge time不会被修改。    <br />    <br /> 用vi等工具编辑一个文件保存后,modify time会被修改。    <br />    <br /> 用ls -l命令不会修改文件的access time,但cat命令会修改access time。    <br />    <center>     <table class="ke-zeroborder" border="0" cellspacing="0" cellpadding="0" width="90%">      <tbody>       <tr>        <td><b>QUOTE:</b></td>       </tr>      </tbody>     </table>     <table style="border-bottom:#808080 1px solid;border-left:#808080 1px solid;border-top:#808080 1px solid;border-right:#808080 1px solid;" class="ke-zeroborder" border="0" cellspacing="1" cellpadding="10" width="90%">      <tbody>       <tr>        <td style="word-break:break-all;" bgcolor="#ffffff" width="100%">ls -lu (show files access time and sort by name)<br /> ls -lc (show files change time and sort by name )<br /> ls -l (show files modify time and sort by name )</td>       </tr>      </tbody>     </table>    </center>    <br /> 如果加上-t参数,则按相应的时间排序后显示。加上--time-style=long-iso,则会把文件的相应年月日时分秒time全部显示出来。    <br />    <br /> touch命令能改变文件的access时间和modify时间为任意指定的时间。    <br />    <br /> modify time只能改变为系统时间,不能改变为任意时间。甚至用c程序来直接读写inode,也不会修改change time