【技術原理】Linux 文件時間屬性詳解:Access、Modify、Change 的區別與聯系

在 Linux 系統中,每個文件都有三個核心時間屬性:Access Time (atime)、Modify Time (mtime) 和 Change Time (ctime)。它們分別記錄文件不同維度的變更信息,以下是具體區別與聯系:


一、定義與觸發條件

時間屬性定義觸發條件示例
Access Time (atime)文件最后一次被 讀取或訪問 的時間- 使用 catless 查看文件內容
- 執行可執行文件
- 播放多媒體文件
cat file.txt 會更新 atime
Modify Time (mtime)文件內容最后一次被 修改 的時間- 編輯文件內容(如 vim 保存)
- 重定向寫入數據(echo "text" > file
echo "new" >> file.txt 更新 mtime
Change Time (ctime)文件元數據最后一次被 修改 的時間- 修改權限(chmod
- 修改屬主或屬組(chownchgrp
- 移動文件(mv
chmod 755 file.txt 更新 ctime

二、核心區別

  1. 作用對象不同
    ? atime 與 mtime:關注文件內容層面的操作(讀取或修改);

    ? ctime:關注文件元數據的變化(權限、屬性等)。

  2. 優先級不同
    ? 修改內容時:同時更新 mtime 和 ctime(因為文件大小等元數據隨之改變)。

    ? 修改元數據時:僅更新 ctime。

  3. 默認查看方式不同
    ? ls -l:默認顯示 mtime。

    ? ls -lu:查看 atime;ls -lc:查看 ctime。


三、聯系與依賴

  1. 修改內容會間接影響元數據
    當文件內容被修改(觸發 mtime 更新),文件大小等元數據可能變化,因此 ctime 也會同步更新。
    示例:

    echo "update" > file.txt  # 修改內容,更新 mtime 和 ctime
    
  2. 訪問操作不影響元數據
    單純讀取文件(如 cat)僅更新 atime,不影響 mtime 和 ctime(除非讀取操作導致元數據變化,如日志輪轉)。

  3. 元數據修改不影響內容時間
    修改權限或屬主(觸發 ctime)不會影響 mtime 或 atime。


四、查看與修改方法

  1. 查看所有時間
    使用 stat 命令可查看完整時間信息:

    stat file.txt
    

    輸出示例:

    Access: 2025-05-15 10:00:00  # atime
    Modify: 2025-05-15 10:00:00  # mtime
    Change: 2025-05-15 10:00:00  # ctime
    
  2. 修改時間屬性
    ? 僅更新 atime:touch -a file.txt

    ? 僅更新 mtime:touch -m file.txt

    ? 強制設置時間:touch -t 202505151000 file.txt


五、常見誤區

  1. “ctime 是創建時間”
    ? 錯誤。Linux 文件系統不記錄創建時間(某些文件系統如 ext4 支持,但無統一標準),ctime 僅表示元數據修改時間。

  2. “目錄的 atime 僅由進入觸發”
    ? 錯誤。進入目錄不會更新其 atime,但通過 ls 查看目錄內容時會更新。

  3. “文件復制保留原時間”
    ? 錯誤。復制文件時,新文件的 atime/mtime/ctime 均重置為當前時間(除非使用 cp -p 保留屬性)。


總結
? atime:文件被讀取的時間。

? mtime:文件內容被修改的時間。

? ctime:文件元數據被修改的時間。

三者共同構成文件生命周期的完整記錄,理解它們的區別與聯系對文件管理、日志分析、系統調試等場景至關重要。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905651.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

乘法口訣練習神器

請你利用python語言開發一個“乘法口訣練習神器”,主要輔助小學生練習乘法口訣,主要功能如下: 1. 能夠隨機循環出10道題,可以是乘法或者是除法。如果是乘法,確保兩個因數都是1-9之間的整數;如果是除法&…

[c語言日寄]數據結構:棧

【作者主頁】siy2333 【專欄介紹】?c語言日寄?:這是一個專注于C語言刷題的專欄,精選題目,搭配詳細題解、拓展算法。從基礎語法到復雜算法,題目涉及的知識點全面覆蓋,助力你系統提升。無論你是初學者,還是…

磁盤I/O瓶頸排查:面試通關“三部曲”心法

想象一下,你就是線上系統的“交通調度總指揮”,服務器的磁盤是所有數據進出的“核心樞紐港口”。當這個“港口”突然擁堵不堪,卡車(數據請求)排起長龍,進不去也出不來,整個系統的“物流”&#…

基于大模型預測胃穿孔預測與圍手術期管理系統技術方案

目錄 1. 系統架構模塊2. 關鍵算法實現2.1 術前預測模型(Transformer多模態融合)2.2 術中實時分析(在線學習LSTM)3. 模塊流程圖(Mermaid)3.1 數據預處理系統3.2 術前預測系統3.3 術中實時分析系統4. 技術驗證模塊4.1 模型可解釋性驗證4.2 邊緣計算部署架構1. 系統架構模塊…

C++:類和對象4

一,日期類實現 學習建議: 對于計算機學習來說,調試十分重要,所以在日常學習中一定要加大代碼練習,刷代碼題和課后自己敲出課上代碼例題,注意不要去對比正確代碼或者網上找正確代碼直接使用,一…

大數據架構選型分析

選擇依據 1.業務需求與技術要求 用戶需要根據自己的業務需求來選擇架構,如果業務對于Hadoop、Spark、Strom等關鍵技術有強制性依賴,選擇Lambda架構可能較為合適;如果處理數據偏好于流式計算,又依賴Flink計算引擎,那么…

Trae 插件 Builder 模式:從 0 到 1 開發天氣查詢小程序,解鎖 AI 編程新體驗

在軟件開發領域,效率與創新始終是開發者追求的核心目標。Trae 插件(原 MarsCode 編程助手)Builder 模式的全面上線,無疑為開發者帶來了全新的解決方案。它不僅同時支持 VS Code、JetBrains IDEs 等主流開發環境,還能讓…

SSM項目集成redis、Linux服務器安裝redis

在SSM(Spring Spring MVC MyBatis)項目中引入Redis主要分為以下步驟,確保配置正確并能在業務中靈活使用: 1. 添加Redis依賴?? 在Maven的pom.xml中添加Spring Data Redis和Jedis(或Lettuce)依賴&#…

【Redis】壓縮列表

目錄 1、背景2、壓縮列表【1】底層結構【2】特性【3】優缺點 1、背景 ziplist(壓縮列表)是redis中一種特殊編碼的雙向鏈表數據結構,主要用于存儲小型列表和哈希表。它通過緊湊的內存布局和特殊的編碼方式來節省內存空間。 2、壓縮列表 【1…

LocalDateTime類型的時間在前端頁面不顯示或者修改數據時因為LocalDateTime導致無法修改,解決方案

1.數據庫中的時間數據,在控制臺可以正常返回,在前端無法返回,即顯示空白,如下圖所示: 2.這種問題一般時由于數據庫和我們實體類的名稱不一致引起的,我們數據庫一般采用_的方式命名,但是在Java中我們一般采用…

Spring框架核心技術深度解析:JDBC模板、模擬轉賬與事務管理

一、JDBC模板技術:簡化數據庫操作 在傳統JDBC開發中,繁瑣的資源管理和重復代碼一直是開發者的痛點。Spring框架提供的 JDBC模板(JdbcTemplate) 徹底改變了這一現狀,它通過封裝底層JDBC操作,讓開發者僅需關注SQL邏輯&a…

Modern C++(一)基本概念

1、基本概念 1.1、注釋 注釋在翻譯階段3會被替換為單個空白字符從程序中移除 1.2、名字與標識符 標識符是一個由數字、下劃線、大小寫字符組成的任意長度序列。有效的標識符首個字符必須是以A-Z、a-z、下劃線開頭,。有效的標識符其他字符可以是0-9、A-Z、a-z、下…

STM32的TIMx中Prescaler和ClockDivision的區別

Prescaler預分頻,以筆者目前的學習程度來說,這個參數,一般來說是對主時鐘進行分頻后的計數器時鐘。這個預分頻后的時鐘主要是用于的計數的。 這個主時鐘,對于時基單元來說可以是內部時鐘,也可以是外部時鐘。一般來說我…

前端性能指標及優化策略——從加載、渲染和交互階段分別解讀詳解并以Webpack+Vue項目為例進行解讀

按照加載階段、渲染階段和交互階段三個維度進行系統性闡述: 在現代 Web 開發中,性能不再是錦上添花,而是決定用戶體驗與業務成敗的關鍵因素。為了全面監控與優化網頁性能,我們可以將性能指標劃分為加載階段、渲染階段、和交互階段…

MySQL——1、數據庫基礎

數據庫基礎 1、安裝MySQL2、什么是數據庫3、數據庫使用案例4、MySQL架構與SQL分類5、存儲引擎 1、安裝MySQL 1、更新軟件包列表 sudo apt update2、查看MySQL安裝包 apt list | grep mysql-server3、安裝MySQL # 默認安裝最新版 sudo apt install -y mysql-server4、啟動My…

ET MailBoxComponent類(實體) 分析

MailBoxComponent 作用是,用來接收Actor消息,處理Actor消息。這個沒有存儲能,收到消息后立即就處理了。ParentInstanceId 是MailBox所在的實體InstanceIdMailBoxType MailBox類型MailBoxInvoker 分發消息的包裝Add 方法,看名字是…

Weblogic SSRF漏洞復現(CVE-2014-4210)【vulhub靶場】

漏洞概述: Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。 漏洞形成原因: WebLogic Server 的 UDDI 組件(uddiexplorer.war)中的 SearchPublicR…

js應用opencv

思路&#xff1a; 第一步&#xff1a;直方圖 第二步&#xff1a;獲得直方圖的波峰 第三步&#xff1a;波峰勝負10&#xff0c;高于或低于變紅色 1.引用import cv from ‘techstark/opencv-js’; 2.vue代碼 <div class"historyLeft2"><div style"relat…

用Python代碼繪制動態3D愛心效果

引言 介紹Python在創意編程中的應用&#xff0c;特別是如何通過簡單的代碼實現視覺上的美感。引出本文將分享的愛心代碼&#xff0c;并簡要說明其實現原理。 愛心代碼的基本實現 展示一個簡單的Python代碼示例&#xff0c;使用字符畫的方式在控制臺中繪制一個愛心圖案。 pr…

使用Python開發經典俄羅斯方塊游戲

使用Python開發經典俄羅斯方塊游戲 在這篇教程中&#xff0c;我們將學習如何使用Python和Pygame庫開發一個經典的俄羅斯方塊游戲。這個項目將幫助你理解游戲開發的基本概念&#xff0c;包括圖形界面、用戶輸入處理、碰撞檢測等重要內容。 項目概述 我們將實現以下功能&…