linux檔案時間戳:atime、mtime和ctime

什麼時候“更改”不是“修改”的意思?當我們談論Linux檔案時間戳時。在本指南中,我們將解釋系統如何更新它們,以及如何自己修改它們。...

什麼時候“更改”不是“修改”的意思?當我們談論Linux檔案時間戳時。在本指南中,我們將解釋系統如何更新它們,以及如何自己修改它們。

atime、mtime和ctime的區別

每個Linux檔案都有三個時間戳:訪問時間戳(atime)、修改時間戳(mtime)和更改時間戳(ctime)。

訪問時間戳是上次讀取檔案的時間。這意味著有人使用程式來顯示檔案的內容或從中讀取一些值。沒有對檔案進行編輯或新增任何內容。資料已被引用,但未更改。

修改的時間戳表示上次修改檔案內容的時間。編輯或操縱檔案的程式或過程。“修改”是指檔案中的某些內容被修改或刪除,或者添加了新資料。

更改的時間戳不是指對檔案內容所做的更改。相反,它是與檔案相關的元資料更改的時間。例如,檔案許可權更改將更新更改的時間戳。

標準的ext4linux檔案系統也在其內部檔案系統結構中為檔案建立時間戳分配空間,但這還沒有實現。有時,填充了這個時間戳,但不能依賴於它中的值。

時間戳的剖析

Linux時間戳儲存的是一個數字,而不是日期和時間。此數字是自Unix紀元(協調世界時,1970年1月1日午夜(00:00:00))以來的秒數。在Linux時間戳中,閏秒被忽略了,因此它們與實時不相似。

當Linux需要顯示時間戳時,它會將秒數轉換為日期和時間。這使得人類更容易理解。檢視檔案的計算機所在的位置和時區指導將秒數轉換為日期和時間。它還可以確保月份使用正確的語言。

那麼,一個時間戳可以儲存多少秒?準確地說是2147483647。這是一個很大的數字,但足夠嗎?如果您將其新增到Unix epoch中,然後將其轉換為日期和時間,您將得到2038年1月19日星期二凌晨03:14:07的時間戳。不過,在此之前,我們需要一個不同的時間戳方案。

檢視時間戳

將-l(long listing)選項與ls一起使用時,如下圖所示,可以看到修改後的時間戳:

ls -l dp.c

如果要檢視訪問時間戳,請使用-lu(訪問時間)選項,如下所示:

ls -lu dp.c

最後,要檢視更改時間戳,可以使用-lc(更改時間)選項;鍵入以下內容:

ls -lc dp.c

linux檔案時間戳:atime、mtime和ctime

上面的時間戳顯示檔案內容最後一次修改是在2019年4月21日。訪問和更改的時間戳是相同的,因為檔案是在2020年1月20日從另一臺計算機複製到這臺計算機上的,並且兩個時間戳都是在那時更新的。

要同時檢視所有時間戳,請使用stat命令,如下所示:

stat dp.c

linux檔案時間戳:atime、mtime和ctime

時區列在顯示屏底部。如你所見,它們有一個非常精確的分數秒分量。在每個時間戳的末尾,還可以看到-0500或-0400。

這些是時區偏移。檔案系統以UTC格式記錄時間戳,並在stat顯示時將其轉換為本地時區。我們用於研究本文的計算機配置為美國東部標準時區(EST)。

當東部標準時間生效時,該時區比UTC晚5個小時。然而,當東部夏令時(EDT)生效時,它比UTC晚了四個小時。2019年4月,修改後的時間戳發生變化,EDT生效。這就是為什麼兩個時間戳的偏移量為5小時,而修改的時間戳的偏移量為4小時。

偏移量和時區不會儲存在任何地方。沒有inode或檔案系統空間專門用來儲存這些值。您必須使用時間戳(始終是UTC時間)、顯示檔案的計算機的本地時區以及DST是否有效來動態計算這些時間。

您還會看到一個“出生”時間戳,它是為檔案的建立日期保留的。這沒有實現,您會看到連字元“-”而不是時間戳。

相關:你想知道的關於Linux上inodes的一切

更改時間戳

如果需要,可以更改檔案上的時間戳。您可以使用touch命令更改訪問或修改的時間戳,或者兩者兼有:

touch -a dp.c

要設定新的訪問時間戳,可以使用-a(訪問時間)選項。此命令將訪問時間戳設定為計算機的當前時間:

stat dp.c

linux檔案時間戳:atime、mtime和ctime

訪問時間戳已按預期更改。但是,更改的時間戳也被更新了;這是正常的。

要更改修改的時間戳,可以使用-m(修改的時間)選項:

touch -m dp.c stat dp.c

linux檔案時間戳:atime、mtime和ctime

這一次,修改和更改的時間戳被更新。

如果要同時更改訪問和修改的時間戳,可以使用-d(date)選項。您還可以指定一個時間和日期,而不限於將時間戳更改為現在。

我們將使用以下命令將訪問和修改的時間戳設定為2020年1月15日10:30:45:

touch -d "2020-01-15 10:30:45" dp.c stat dp.c

linux檔案時間戳:atime、mtime和ctime

我們現在將訪問和修改的時間戳設定為過去的日期。更改的時間戳也被更新為計算機的當前時間。

如果要將一個檔案的時間戳設定為另一個檔案的時間戳值,還可以使用-r(引用)選項,如下所示:

touch dp.c -r dice_words.sl3 stat dp.c

linux檔案時間戳:atime、mtime和ctime

然後,我們差不多回到了我們開始的地方,時間戳是-0400和-0500的混合。

讓我們做一些隻影響更改的時間戳的事情。我們將使用chmod命令為所有使用者授予可執行檔案執行許可權:

chmod +x dp stat dp

linux檔案時間戳:atime、mtime和ctime

更改的時間戳是唯一更新的時間戳。這是因為檔案本身沒有改變,它既沒有被訪問也沒有被修改。但是,有關該檔案的元資料已更改。

相關:如何在Linux上使用chmod命令

檔案系統如何更新時間戳

安裝檔案系統時,可以使用一些選項來指定該檔案系統的操作或處理方式。它們儲存在/etc/fstab檔案中,該檔案在引導時被讀取和處理。您還可以設定選項來指定他們應該用來更新訪問時間戳的方案。

以下是一些最常見的選項:

  • strictatime(strictatime):此選項在每次訪問檔案時更新檔案的訪問時間戳。這種方**帶來額外的開銷,但是有些伺服器可以從這個方案中受益。它在臺式機或膝上型電腦上沒有什麼優點。
  • noatime(no atime):此選項完全禁止更新檔案和目錄的訪問時間戳。但是,修改後的時間戳仍將更新。
  • nodiratime(no dir atime):此選項啟用要更新的檔案的訪問時間戳,但禁用目錄的訪問時間戳。
  • relatime(relatime):僅當訪問時間戳超過24小時,或者前一個時間戳早於當前修改或更改的時間戳時,此選項才更新訪問時間戳。這在訪問時間戳更新過於頻繁或根本不更新之間取得了很好的平衡。

讓我們檢視此計算機的/etc/fstab檔案,並檢視設定了哪些選項:

less /etc/fstab

linux檔案時間戳:atime、mtime和ctime

將為我們顯示/etc/fstab檔案,如下所示。

linux檔案時間戳:atime、mtime和ctime

以下是不帶環繞的檔案內容:

# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <opti***> <dump> <pass> # / was on /dev/sda1 during installation UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0

只有兩個條目,其中一個是交換檔案,我們可以忽略它。另一個安裝在檔案系統的根目錄(/)上,安裝時在裝置/dev/sda1上。這是第一個硬碟上的第一個分割槽,它恰好包含一個ext4檔案系統。

傳遞給它的唯一選項是errors=remount ro,它告訴作業系統,如果嘗試將此檔案系統作為讀寫檔案系統裝載時出錯,則將其作為只讀檔案系統重新裝載。

所以,沒有提到如何處理訪問時間戳。讓我們深入研究一下/proc/mounts能告訴我們什麼。我們將透過grep將/proc/mounts的輸出管道。我們的搜尋字串將是“sda”,硬碟驅動器識別符號。

我們鍵入以下內容:

cat /proc/mounts | grep "sda"

linux檔案時間戳:atime、mtime和ctime

現在我們看到以下選項:

  • rw:檔案系統將作為讀寫檔案系統安裝。
  • relatime:檔案系統將使用“相對atime”方案來更新訪問時間戳。

那是從哪裡來的?那麼,在以下情況下使用RelasTime方案:

  • 當使用defaults/etc/fstab選項時。
  • 使用relatime/etc/fstab選項時。
  • 如果在/etc/fstab中使用了no access timestamp選項,並且您使用的是Linux核心2.6.30或更新版本。

ext4檔案系統的/etc/fstab條目沒有指定任何訪問時間戳更新選項,因此Linux做出了明智的選擇並使用relatime。

相關:如何在Linux上編寫fstab檔案

時間戳很重要

時間戳為我們提供了一種檢視檔案何時被訪問、修改或更改的簡單方法。但是,更重要的是,它們提供了一種備份和同步軟體的方法,以確定需要備份哪些檔案。

當您需要強制說服程式包含或忽略一個檔案或一組檔案時,操縱時間戳的能力將被證明是有用的。

  • 發表於 2021-04-02 16:01
  • 閱讀 ( 62 )
  • 分類:網際網路

你可能感興趣的文章

使用以下技巧和技巧成為linux命令列高手

... 檔案和資料夾 ...

  • 發佈於 2021-03-12 10:19
  • 閲讀 ( 46 )

什麼是unix時代?unix時代是什麼時候?

...間戳也被大量使用,所以它們的儲存會增加。例如,每個檔案都有三個與之關聯的時間戳。 ...

  • 發佈於 2021-03-26 15:47
  • 閲讀 ( 46 )

如何在啟動時用systemd執行linux程式

...。要勾選所有方框,我們的服務必須是: 透過服務單元檔案與systemd整合 啟動時啟動 使用systemd的控制介面systemctl進行控制 能夠寫日記 建立服務程式 我們需要一個systemd會啟動的程式。我們將建立一個簡單的指令碼,稱為“htg....

  • 發佈於 2021-04-01 17:43
  • 閲讀 ( 50 )

如何使用journalctl讀取linux系統日誌

...的改變。根據建立日誌的服務或守護程式,日誌通常位於檔案系統中的不同位置。但他們都有一個共同點。它們是純文字檔案。 使用systemd,所有系統、引導和核心日誌檔案都由一個集中的、專用的日誌解決方案收集和管理。它...

  • 發佈於 2021-04-02 17:06
  • 閲讀 ( 37 )

如何在linux上使用grep命令

...rep命令是一個字串和模式匹配實用程式,它顯示來自多個檔案的匹配行。它還可以處理其他命令的管道輸出。我們教你怎麼做。 格雷普背後的故事 grep命令在Linux和Unix界很有名,原因有三個。首先,它非常有用。第二,豐富的...

  • 發佈於 2021-04-02 17:23
  • 閲讀 ( 44 )

你想知道的關於linux上inodes的一切

Linux檔案系統依賴於inode。檔案系統內部工作的這些重要部分經常被誤解。讓我們看看他們到底是什麼,他們做了什麼。 檔案系統的元素 根據定義,檔案系統需要儲存檔案,而且它們還包含目錄。檔案儲存在目錄中,這些目錄...

  • 發佈於 2021-04-02 18:04
  • 閲讀 ( 44 )

如何在linux上使用history命令

...令,可以鍵入負數,如下所示: history -d -5 手動更新歷史檔案 當您登入或開啟終端會話時,歷史記錄列表將從歷史記錄檔案中讀取。在Bash中,預設的歷史檔案是.Bash\u history。 在當前終端視窗會話中所做的任何更改僅在關閉終端...

  • 發佈於 2021-04-02 18:17
  • 閲讀 ( 51 )

如何在linux上使用stat命令

...挖個洞。你可以像剝洋蔥一樣剝Linux。 ls將向您顯示有關檔案的大量資訊,例如對其設定了哪些許可權、檔案的大小以及檔案是檔案還是符號連結。為了顯示這個資訊,ls從一個叫做inode的檔案系統結構中讀取它。 每個檔案和目...

  • 發佈於 2021-04-02 19:25
  • 閲讀 ( 54 )

如何在linux上使用dmesg命令

...彩色顯示,請使用以下命令: sudo dmesg --color=always 人類時間戳 預設情況下,dmesg使用自核心啟動以來秒和納秒的時間戳表示法。要以更人性化的格式呈現,請使用-H(human)選項。 sudo dmesg -H 這導致兩件事發生。 輸出自動以較...

  • 發佈於 2021-04-02 21:09
  • 閲讀 ( 58 )

如何使用ls命令列出linux上的檔案和目錄

...項,包括一些您應該新增到命令列庫中的選項。 ls列出檔案和目錄 ls命令可能是大多數Linux使用者遇到的第一個命令。我們這些整天圍著命令列轉的人日復一日地使用它,甚至沒有想過它。這也許可以解釋為什麼這個命令比大...

  • 發佈於 2021-04-02 21:28
  • 閲讀 ( 46 )
w5gAigD9a
w5gAigD9a

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦