Linux 中 ctime,mtime,atime 的区别
文章目錄
- 改變和修改的區別
- ctime
- mtime
- atime
- 查看文件時間
- 關于 relatime
改變和修改的區別
改變和修改之間的區別在于是改變文件的屬性還是改變文件的內容。如果有人說 chmod a-w myfile(刪除所有用戶對文件 myfile 的寫權限),那么這叫改變;如果有人說 echo foo >> myfile(將文件 foo 的內容追加輸出到文件 myfile 中。>> 叫追加輸出重定向符號),那么這叫修改。改變是文件的索引節點發生了改變,修改是文本的內容發生了變化。
ctime
change time(也有人說是 status time),改變時間,變更時間,最后一次改變文件的時間。指的是文件的元數據,狀態最后被變更的時間。改變文件的元數據,即:屬性。例如,更改文件的 inode、權限、所屬組等。
ctime 文件的權限、擁有者、所屬的組、鏈接數發生改變時的時間。當然當內容改變時也會隨之改變(即inode內容發生改變和Block內容
發生改變時)
ctime 是在寫入文件、更改所有者、權限或鏈接設置時隨 Inode 的內容更改而更改的。
更改文件的內容就一定會更改 mtime 和 ctime,mtime 改變,ctime 一定會改變,但是文件的 ctime 可能會在 mtime 未發生變化時更改,也就是說 ctime 改變,mtime 未必改變。例如,文件的權限更改,但是文件內容沒有變化的情況下,ctime 改變,mtime 不改變。
atime、mtime、ctime 都放在 inode 中,若 mtime,atime 修改,inode 就一定改變,既然 inode 改變了,那 ctime 也就跟著要改變了。
mtime
modify time,modified time,modification time,修改時間,最后一次修改文件的時間,指的是文件內容最后被修改的時間。
mtime 是在寫入文件時隨文件內容的更改而更改。
比如用 vi 編輯時就會被改變。(也就是Block的內容)
atime
access time,訪問時間,文件最后一次被訪問的時間,或者叫文件最后被讀取的時間,因此閱讀一個文件會更新它的訪問時間
atime 讀取文件或者執行文件時會更改。
atime 不一定在訪問文件之后被修改,因為使用 ext3 文件系統的時候,如果在 mount(掛載) 的時候使用了 noatime 參數那么就不會更新 atime 的信息。我們知道 atime、mtime、ctime 都放在 inode 中,若 mtime,atime 修改,inode 就一定改變,既然 inode 改變了,那 ctime 也就跟著要改變了。之所以在 mount option 中使用 noatime, 就是不想 file system 做太多的修改,從而改善讀取效率。
查看文件時間
(一)使用命令 stat 可以查看文件的所有時間屬性,如下所示:
[root@htlwk0001host ~]# stat httpd文件:httpd大小:92 塊:0 IO 塊:4096 目錄 設備:fd01h/64769d Inode:34185529 硬鏈接:5 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 最近訪問:2021-04-23 22:05:47.104315111 +0800 atime 最近更改:2020-08-15 12:39:32.000000000 +0800 mtime 最近改動:2020-08-23 14:15:51.903328888 +0800 ctime 創建時間:-(二)使用命令 ls 查看文件的時間屬性
ls -l file,查看文件修改時間:
[root@htlwk0001host ~]# ls -l install.php -rw-r--r-- 1 root root 1295 8月 23 2020 install.php2020年8月23日,這是文件的 mtime。
ls -lc file,查看文件狀態改動時間:
[root@htlwk0001host ~]# ls -lc install.php -rw-r--r-- 1 root root 1295 8月 23 2020 install.phpls -lu file,查看文件訪問時間:
[root@htlwk0001host ~]# ls -lu install.php -rw-r--r-- 1 root root 1295 8月 23 2020 install.phpls -l --time=atime,查看文件訪問時間:
[root@htlwk0001host ~]# ls -l --time=atime 總用量 1284196 -rw-r--r-- 1 root root 4023 12月 27 14:58 4946737_test.dpqyw.com_nginx.zip -rw-r--r-- 1 root root 15670 1月 16 13:21 aa4.jpg -rw-r--r-- 1 root root 2151 1月 16 13:21 Demo1.classls -l --time=ctime 查看文件的改變時間:
[root@htlwk0001host ~]# ls -l --time=ctime 總用量 1284196 -rw-r--r-- 1 root root 4023 12月 27 14:58 4946737_test.dpqyw.com_nginx.zip -rw-r--r-- 1 root root 15670 1月 16 13:21 aa4.jpg -rw-r--r-- 1 root root 2151 1月 16 13:21 Demo1.class -rw-r--r-- 1 root root 2227 1月 16 13:21 Demo1.java drwxr-xr-x 5 root root 92 8月 23 2020 httpd關于 relatime
如果每次訪問文件都會更新 atime,這是很耗時的,尤其在 web 服務器上,大量用戶只是訪問 html 頁面,完全沒有必要修改 atime。從kernel 2.6.29 開始,文件系統默認集成了一個 relatime 的屬性,這樣就不會每次訪問文件時都改變 atime,而是滿足一定條件才會更改 atime。
可能是因為在文件讀操作很頻繁的系統中,atime 更新所帶來的開銷很大,所以很多 SA(系統管理員)都在掛裝文件系統的時候使用noatime 屬性來停止更新 atime。但是有些程序需要根據 atime 進行一些判斷和操作,所以 Linux 就推出了一個relatime特性。使用這個特性來掛裝文件系統后,只有當 mtime 比 atime 更新或者上次訪問時間是在 1 天前才會更新 atime。使用方法就是通過 mount -o relatime /dir 來掛裝目錄。
總結
以上是生活随笔為你收集整理的Linux 中 ctime,mtime,atime 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑绘制实验折线图(电脑制作折线统计图)
- 下一篇: 我的世界电脑地图种子代码大全(我的世界电