1. 程式人生 > >【整理歸納】Linux中檔案的Access,Modify,Change區別

【整理歸納】Linux中檔案的Access,Modify,Change區別

  • Access\Modify\Change的初始時間記錄都是檔案被建立的時間
  • Access 指最後一次讀取的時間(訪問)
  • Modify 指最後一次修改資料的時間(修改)
  • Change 指最後一次修改元資料的時間(改變)

Access 意思是“訪問”。
在終端上用cat、more 、less、grep、sed、 cp 、file 一個檔案時,此檔案的Access的時間記錄都會被更新(空檔案例外),純粹的access是不會影響modify和change,但會受到modify行為的影響。
用ls -lu看到的檔案時間是最近一次access的時間。對於目錄而言,只是進入目錄的話不會改變它的access時間,但只要用ls查看了此目錄的內容(無論在何處),這個目錄的access時間就會被更新。

Modify 意思是“更改(內容),“或者“寫入”。
當更改了一個檔案的內容的時候,此檔案的modify的時間記錄會被更新。用ls -l看到的檔案時間是最近一次modify的時間。modify的行為是三個行為中最有影響力的行為,它發生以後,會使檔案的access記錄與change記錄也同時得到更新。對於目錄也是如此。

Change 改變(狀態或屬性)。
對一個檔案或者目錄作mv、chown、chgrp操作後,它的Change時間記錄被更新,change時間會受到modify行為的影響。用ls -lc看到的檔案時間是最近一次change的時間。

  • 假如用cat命令將檔案a.txt的內容輸出到終端( 執行 cat a.txt), 那麼只有a.txt的Access就被重新整理了
  • 假如我們把當前的時間追加到a.txt(執行 date >> a.txt) , 那麼a.txt的Modify和Change都被重新整理
  • 假如我們把a.txt的許可權改為777(執行 chmod 777 a.txt) , 那麼只有a.txt的Change被重新整理
  • 假如我們用vi命令把檔案a.txt開啟, 然後儲存退出,那麼a.txt的Access,Modify和Change都被重新整理
    PS: 我們可以使用命令touch更新a.txt的Access和Modify時間。
    如:
    touch -d 1999-01-01 a.txt    // 將a.txt的Access和Modify時間改為1999-01-01
    touch -a a.txt // 只將a.txt的Access時間改為當前系統時間 touch -m a.txt // 只將a.txt的Modify時間改為當前系統時間
    當我們用ls -l a.txt看到的時間是Modify時間。