linux文件時間知識

          在windows下,一個文件有:創(chuàng)建時間、修改時間、訪問時間。
          在Linux下,一個文件也有三種時間,分別是:訪問時間、修改時間、狀態(tài)改動時間。

          兩者有此不同,在Linux下沒有創(chuàng)建時間的概念,也就是不能知道文件的 建立時間,但如果文件建立后就沒有修改過,修改時間=建立時間;如果文件建立后,狀態(tài)就沒有改動過,那么狀態(tài)改動時間=建立時間;如果文件建立后,沒有被 讀取過,那么訪問時間=建立時間,因?yàn)椴缓门袛辔募欠癖桓倪^、讀過、其狀態(tài)是否變過,所以判斷文件的建立時間基本上能為不可能。
           
          如何查一個文件的三個時間呢?
          先用下面的命令來建立一個文件
          # date && echo "this is file be used test time of file" >filetime.txt && ll --full-time filetime.txt
          Tue Aug  4 15:13:44 HKT 2009
          -rw-r--r--    1 root     root           39 2009-08-04 15:13:44.000000000 +0800 filetime.txt
           
          通過stat filename.txt來查,如:
          # stat filetime.txt
            File: `filetime.txt'
            Size: 39              Blocks: 8          IO Block: 4096   Regular File
          Device: 802h/2050d      Inode: 17          Links: 1   
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 15:13:44.000000000 +0800
          Modify: 2009-08-04 15:13:44.000000000 +0800
          Change: 2009-08-04 15:13:44.000000000 +0800

          說明:Access訪問時間。Modify修改時間。Change狀態(tài)改動時間??梢詓tat *查看這個目錄所有文件的狀態(tài)。
          ctime=change time
          atime=access time
          mtime=modifiy time
           
          因?yàn)檫@是一個新的文件(filetime.txt),沒做過內(nèi)容、屬性的更改,也沒讀過這個文件,所以三者(訪問時間、修改時間、狀態(tài)改動時間)的時間是一致的,這時文件的修改時間與這三個時間是一樣的,是沒有疑問的。
           
          1、訪問時間,讀一次這個文件的內(nèi)容,這個時間就會更新。比如對這個文件運(yùn)用 more、cat等命令。ls、stat命令都不會修改文件的訪問時間。
          2、修改時間,修改時間是文件內(nèi)容最后一次被修改時間。比如:vi后保存文件。ls -l列出的時間就是這個時間。
          3、狀態(tài)改動時間。是該文件的i節(jié)點(diǎn)最后一次被修改的時間,通過chmod、chown命令修改一次文件屬性,這個時間就會更新。
           
          另個除了可以通過stat來查看文件的mtime,ctime,atime等屬性,也可以通過ls命令來查看,具體如下:
          ls -lc filename 列出文件的 ctime (最后更改時間)
          ls -lu filename 列出文件的 atime(最后存取時間)
          ls -l filename 列出文件的 mtime (最后修改時間)
           
          在linux中stat函數(shù)中,用st_atime表示文件數(shù)據(jù)最近的存取時間(last accessed time);用st_mtime表示文件數(shù)據(jù)最近的修改時間(last modified time);使用st_ctime表示文件i節(jié)點(diǎn)數(shù)據(jù)最近的修改時間(last i-node's status changed time)。
           
           字段           說明                  例子           ls(-l)
           st_atime  文件數(shù)據(jù)的最后存取時間       read            -u
           st_mtime  文件數(shù)據(jù)的最后修改時間       write           缺省
           st_ctime  文件數(shù)據(jù)的最后更改時間       chown,chmod     -c
           
           
          在linux系統(tǒng)中,系統(tǒng)把文件內(nèi)容數(shù)據(jù)與i節(jié)點(diǎn)數(shù)據(jù)是分別存放的,i節(jié)點(diǎn)數(shù)據(jù)存放了文件權(quán)限與文件屬主之類的數(shù)據(jù)。
           
          另外,可以格式化輸出文件的三種時間,如:
          find . -name file -printf "%AY-%Am-%Ad %AH:%AM:%AS"
          find . -name file -printf "%TY-%Tm-%Td %TH:%TM:%TS"
          find . -name file -printf "%CY-%Cm-%Cd %CH:%CM:%CS"
           
          linux的ctime代表的是文件修改時間,如果文件被修改過就很難知道文件的創(chuàng)建時間,在某些特殊情況下,需要查看文件的創(chuàng)建時間,正常情況下查看文件的ctime是無法實(shí)現(xiàn)的。可以使用一個變通的方法來實(shí)現(xiàn)保留文件創(chuàng)建時間,但是同時也會犧牲一些其它特性。
           
          可以在mount文件的時候使用參數(shù)-o noatime,來把系統(tǒng)更新atime的特性關(guān)閉。使用了noatime參數(shù)掛載后,在文件被修改后文件的atime是不會被改變的,使用stat查看到的atime就是文件的創(chuàng)建時間。
          如:
          # / sbin/mkfs -t ext3 /dev/ram10
          # mount -t ext3 -o noatime /dev/loop0 /mnt/foo
          # mount
          /dev/ram10 on /mnt/foo type ext3 (rw,noatime)
          # cd /mnt/foo
          # touch filetime1.txt
          # stat filetime1.txt
            File: `filetime1.txt'
            Size: 0               Blocks: 0          IO Block: 4096   Regular File
          Device: 10ah/266d       Inode: 12          Links: 1   
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 20:51:32.000000000 +0800
          Modify: 2009-08-04 20:51:32.000000000 +0800
          Change: 2009-08-04 20:51:32.000000000 +0800
           
          # echo foo.ok >> filetime1.txt
          [root@logs-bak foo]# stat filetime1.txt
            File: `filetime1.txt'
            Size: 14              Blocks: 2          IO Block: 4096   Regular File
          Device: 10ah/266d       Inode: 12          Links: 1   
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 20:51:32.000000000 +0800
          Modify: 2009-08-04 20:53:27.000000000 +0800
          Change: 2009-08-04 20:53:27.000000000 +0800
           
          # cat filetime1.txt
            foo.ok
          #stat filetime1.txt
            File: `filetime1.txt'
            Size: 14              Blocks: 2          IO Block: 4096   Regular File
          Device: 10ah/266d       Inode: 12          Links: 1   
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 20:51:32.000000000 +0800
          Modify: 2009-08-04 20:53:27.000000000 +0800
          Change: 2009-08-04 20:53:27.000000000 +0800
           
          # 通過以上實(shí)驗(yàn)可以看出文件的access time 是不變的。
           
          接著向下多測試一下.
          # vi filetime1.txt
          # stat filetime1.txt
            File: `filetime1.txt'
            Size: 23              Blocks: 2          IO Block: 4096   Regular File
          Device: 10ah/266d       Inode: 14          Links: 1   
          Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 20:55:05.000000000 +0800
          Modify: 2009-08-04 20:55:05.000000000 +0800
          Change: 2009-08-04 20:55:05.000000000 +0800
           
          # chmod 777 filetime1.txt
          # stat filetime1.txt
            File: `filetime1.txt'
            Size: 23              Blocks: 2          IO Block: 4096   Regular File
          Device: 10ah/266d       Inode: 14          Links: 1   
          Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
          Access: 2009-08-04 20:55:05.000000000 +0800
          Modify: 2009-08-04 20:55:05.000000000 +0800
          Change: 2009-08-04 20:57:36.000000000 +0800
          可見,chmod后,Ctime的變化。
          #########################################################
          說到這里,大概大家也對在linux下文件的時間有所了解了吧!
          那么以下的操作對文件的時間有什么影響呢?
           
          操作                        atime        mtime       ctime
          ----------------------------------------------------------
          mv
          ----------------------------------------------------------
          cp
          ----------------------------------------------------------
          touch
          ----------------------------------------------------------
          cat/more/less
          ----------------------------------------------------------
          ls
          ----------------------------------------------------------
          chmod/chown
          ----------------------------------------------------------
          ln
          ----------------------------------------------------------
          echo
          ----------------------------------------------------------
          vi
          ----------------------------------------------------------
          (請大家測試完成這個表吧?。。。∽鐾隃y試可以給我留言啊?。?/div>
          ##############################################################
           
          另外,從kernel2.6.29開,還默認(rèn)集成了一個relatime的屬性。可能是因?yàn)樵谖募x操作很頻繁的系統(tǒng)
          中,atime更新所帶來的開銷很大,所以很多SA都在掛裝文件系統(tǒng)的時候使用noatime屬性來停止更新atime。但是有些程序需要根據(jù)atime進(jìn)行一些判斷和操作,所以Linux就推出了一個relatime特性。
          使 用這個特性來掛裝文件系統(tǒng)后,只有當(dāng)mtime比atime更新的時候,才會更新atime。事實(shí)上,這個時候atime和mtime已經(jīng)是同一個東西 了。所以這個選項(xiàng)就是為了實(shí)現(xiàn)對atime的兼容才推出的。并不是一個新的時間屬性。使用方法就是通過mount -o relatime /dir來掛裝目錄。

          posted on 2010-02-03 11:39 andy.kong 閱讀(343) 評論(0)  編輯  收藏 所屬分類: linux


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          公告

          師者,所以傳道授業(yè)解惑也!

          導(dǎo)航

          <2010年2月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28123456
          78910111213

          統(tǒng)計

          • 隨筆 - 24
          • 文章 - 4
          • 評論 - 9
          • 引用 - 0

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 衡东县| 平乡县| 芦山县| 谢通门县| 沙田区| 砀山县| 邛崃市| 汾西县| 南昌县| 眉山市| 山西省| 项城市| 惠州市| 甘德县| 余庆县| 安宁市| 淮阳县| 桦川县| 通城县| 法库县| 福清市| 姜堰市| 左云县| 保靖县| 白山市| 新疆| 安康市| 孝昌县| 博客| 宁都县| 芒康县| 弋阳县| 岐山县| 锡林浩特市| 原平市| 邵武市| 舞钢市| 鄢陵县| 古浪县| 彭水| 岫岩|