linux下stat命令詳解


在linux系統下,使用stat(顯示inode信息)命令可以查看一個文件的某些信息,我們先來嘗試一下。 
這里寫圖片描述 
簡單的介紹一下stat命令顯示出來的文件其他信息: 
- File:顯示文件名 
- Size:顯示文件大小 
- Blocks:文件使用的數據塊總數 
- IO Block:IO塊大小 
- regular file:文件類型(常規文件) 
- Device:設備編號 
- Inode:Inode號 
- Links:鏈接數 
- Access:文件的權限 
- Gid、Uid:文件所有權的Gid和Uid。

Linux下的三個時間: 
1. Access Time:簡寫為atime,表示文件的訪問時間。當文件內容被訪問時,更新這個時間 
2. Modify Time:簡寫為mtime,表示文件內容的修改時間,當文件的數據內容被修改時,更新這個時間。 
3. Change Time:簡寫為ctime,表示文件的狀態時間,當文件的狀態被修改時,更新這個時間,例如文件的鏈接數,大小,權限,Blocks數。

上面最開始的三個時間是一模一樣的,原因是我在創建它的同時修改了它的內容,所以它的大小,Blocks也發生變化,也相當於一次訪問,所以,我退出保存后三個時間一致。

下面進行一一驗證。

1.atime(訪問時間)的更新 
這里寫圖片描述 
2.mtime(修改時間)的更新 
這里寫圖片描述 
這里我使用echo指令向hello.cpp文件中寫入了一行內容,驚訝的發現,不止mtime被更新了,而且ctime也被更新了。這是問什么呢?原因很簡單,前面說過,ctime在文件大小,Blocks發生變化時也會被更新,所以仔細觀察上圖,這兩項信息是否發生變化了呢? 
3.ctime(狀態時間)的更新

這里寫圖片描述 
使用chmod指令修改hello.cpp的文件權限后,狀態時間再次更新。 
那如果不采取這些操作導致系統自己更新這三個時間,有沒有辦法人為改變這三個時間呢?答案是有的,請繼續往下看~

touch命令 
我們都知道touch命令是用來創建文件的,其實它的用法還有一個,就是修改文件的時間戳。 
用法: 
-a 或–time=atime或–time=access或–time=use 只更改訪問時間。 
-m 或–time=mtime或–time=modify  只更改修改時間 
-d、-t  使⽤指定的⽇期時間,⽽⾮現在的時間 
我們來試一試: 
這里寫圖片描述 
通過上圖可以發現,我只是通過-a選項試圖修改hello.cpp的訪問時間,結果ctime(狀態時間)也發生了改變。雖然實際上我用touch操作只改變了atime,但是由於文件的狀態發生了變化,所以ctime就自己更新了。 
這里寫圖片描述 
沒錯,和上面一樣,我只是通過-m選項改了文件的修改時間,ctime依然更新了。touch指令依然只是修改了修改時間,而狀態時間是系統自己更新的。為什么會這樣呢?想一下,我們每次使用touch指令其實都是修改了文件的inode信息,所以狀態時間就會自己更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM