linuxctime
A. linux文件系統的mtime, ctime有什麼區別
首先可以使用stat 命令來查詢文件的inode信息,其中包括ctime atime mtime
1.文件的容易理解:
文件的 Access time,atime 是在讀取文件或者執行文件時更改的任何對inode的早納訪問都會使此處改變。
文件的 Modified time,mtime 是在寫入文件時隨文件內容的更改而更改的。
文件的 Change time,ctime 是在寫入文件、更改所有者、許可權或鏈接設置時隨 Inode 的內容更改而更改的。只要stat出來的內容發生改變就會發生改變。mtime的改變必然導致ctime的改變。
2.文件夾的:
文件夾的 Access time,atime 是在讀取文件或者執行文件時更改的(我們只cd進入一個目錄然後cd ..不會引起atime的改變,但ls一下就不同了)。
文件夾的 Modified time,mtime 是在文件夾中有文件的新建、***才會改變(如果只是改變文件內容不會引起mtime的改變,換句話說如果ls -f <directory>的結果發生改變mtime就會被刷新。這里可能有人要爭論了:我進入dd這個文件夾vi了一個文件然後退出,前後ls -f <directory>的結果沒有改變但是文件夾的mtime發生改變了……這液晌點請主意vi命令在編輯文鬧睜鋒件時會在本文件夾下產生一 個」.file.swp」臨時文件,該文件隨著vi的退出而被***……這就導致了mtime的改變 [Auxten:p]不信你可以用nano修改文件來試驗)。
文件夾的 Change time,ctime 基本同文件的ctime,其體現的是inode的change time。
這里還要補充一點:
mount -o noatime(mount -o remount,atime /
可以在線重新掛載根目錄)可以選擇不記錄文件的atime的改變,這意味著什麼呢?
當你創建了這個文件後這個文件的atime就定格了,除非你用 touch或者touch -a強制刷新文件的atime。
這樣在可以在一定程度上提升文件系統的讀寫性能,特別是網站這種系統中在fstab裡面加上noatime是個好主意 O(∩_∩)O
如我的
/dev/sda3 / ext3 noatime 0 1
如果你想了解更詳細內容,建議看看劉遄老師的另外就是劉遄老師的《linux就該這么學》,書籍當中有詳細的描述
B. Linux find命令atime/mtime/ctime參數
通過 touch 命令創建五個日誌文件,在Linux系統中,一個文件有三個時間參數,分別是atime,mtime,ctime。
access time(atime):顯示的是文件中的數據最後被訪問的時間。
modify time(mtime):顯示的是文件內容被修改的最後時間。當修改文件的內容數據的時候,就會更新這個時間,而更改許可權或者屬性,mtime不會改變,這就是和ctime的區別。
change time(ctime):顯示的是文件的許可權、擁有者、所屬的組、鏈接數發生改變時的時間。當然當內容改變時也會隨之改變。
當修改文件內容時,三個時間都發生了改變。
當修改文件權答裂行限時,源賣只有ctime發生了改變。
當前時間27號22:03,
+2 表示的是查找 24號22:03前的文件
+3 表示的是查找 23號22:03前的文件
3 表示的是查找23號22:03 到 24號22:03 之間的清嘩文件
-3 表示的查找24號22:03 到 27號22:03之間的文件
C. linux ctime函數會不會造成內存泄漏
ctime函數是不會有內存泄露的問題的,因為它返回的字元串並不是動態分配的內存空和慧畢間,而是函數所提供的靜態空間(具體是怎麼實現的就不知道了)。之所以這么說,是因為如果多次調用ctime函數,前面一次的調用返回的字元串喚芹空間會被後續的那一次調用所覆蓋,而且一本老外寫的書上也是說過它返回的碧滑是靜態空間。由此,如果想保存ctime的返回結果,最好的使用方法是將返回的字元串復制到另一個字元串中。
D. Linux搜索7天內被訪問過的所有文件命令是什麼
在linux操作系統中,每個文件都有很多的時間參數,其中有三個比較主要,分別是ctime,atime,mtime
modification time(mtime):
status time(ctime)
accesstime(atime)
-mtime -n +n #按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime -n +n #按文件訪問時間來查GIN: 0px">
-ctime -n +n #按文件創建時間來查找文件,-n指n天以內,+n指n天以前
當修改文件的內容數據的時候,就會更新這個時間,而更改許可權或者屬性,mtime不會改變,這就是和ctime的區別
當修改文件的許可權或者屬性的時候,就會更新這個時間,ctime並不是create time,給我的感覺更像是change time,但這么說也不完全對,因為只有當更新文件的屬性或者許可權的時候才會更新這個時間,更改內容的話是不會更新這個時間的。《Linux就該這么學》
當使用這個文件的時候就會更新這個時間
7天內被訪問過的所有文件命令
# find / -type f-atime -7
E. linux查看和修改文件的時間
1、查看文件大小:
# -sh filename
2、查看文件,文件夾屬性:
#ls -l filename
#ls -ld foldername
3、查看文件的三個時間 atime ,ctime, mtime
3.1、 mtime(modification time),修改時間: 這個時間指的是文件內容修改的時間,而不是文件屬性的修改,當數據內容修改時,這個時間就會改變,用命令ls -l默認顯示的就是這個時間
3.2、ctime(status time ),狀態時間:當一個文件的狀態改變時,這個時間就會改變,例如更改了文件的許可權與屬性等,它就會改變。
3.3、atime(access time),訪問時間:當讀取文件內容時,就會更改這個時間,例如使用cat 去讀取/etc/man.config,那麼該文件的atime就會改變。
3.4、查看命令:
# ls -l --full-time /etc/man.config mtime
# ls -l --time=atime --full-time /etc/man.config atime
# ls -l --time=ctime --full-time /etc/man.config ctime
4、其他
如果要一起查看文件的三個時間情況,可以用命令stat進行查看
# stat /etc/man.config
F. linux怎麼用c獲取當前時間
Linux C編程獲取當前時間用time這個函數,time函數會返回一個time_t類型的時間戳(這個time_t類型實際上是一個長整型,定義在time.h頭文件中)。time函數的函數原型是這樣的:
time_t time(time_t *tloc);
使用time函數需要包含time.h頭文件:
#include <time.h>
調用time函數的代碼是這樣的:
time_t t;
t=time((time_t *) 0);
因為time函數參數的作用和返回值一樣,只是用於接收時間戳,所以這里調用time函數可以傳入一個空指針,表示只用它的返回值,不用指針參數來接收時間戳。
因為time函數只是返回一個時間戳,如果想列印直觀的時間信息,可以把剛才的time_t作為參數調用ctime函數,ctime函數會返回一個字元串,ctime函數的調用是這樣的:
printf("The time and date is: %s", ctime(&t));
t就是剛才調用time函數返回的time_t類型變數。
G. LINUX下怎樣更新文件夾下所有文件的時間戳
在Linux中,文件沒有「創建時間」這個說法。Linux中的文件的時間屬性只有三個:atime(Access time)、mtime(Modified time)、ctime(Change time)。不過,有時有人把ctime理解為create time(創建時間),這是不對的,為什麼呢?因為,我們知道一個文件的創建時間只有一次,按這個理論,創建時間是不允許修改的,即一個文件一旦創建,它的ctime值就固定不變;但事實呢?是可以改變的。 atime指用戶上次訪問該文件(打開文件查看其中的內容)時的時間,只要一個用戶訪問該文件(不管以什麼方式),atime的值都會改變,比如:修改一個文件的內容,必然要先打開文件,然後才會修改其中的內容,所以,修改一個文件時,不但會更新一個文件的mtime值,也會更新atime的值。 mtime指用戶上次修改該文件中的內容的時間,只要用戶修改該文件中的內容,那麼mtime的值就會被更新。 ctime指該文件的屬性上次被改變時的時間。要想查看文件的屬性,可以通過ls命令查看,比如:ls -l。例如:你修改該文件的許可權了或者改變該文件的硬鏈接數了,ctime的值都會被更新。但是有一點,ctime的值更新,並不代表atime和mtime的值也更新,比如:你修改文件的許可權,但並不代表你訪問或修改了文件中的內容。 在做一些相應的操作時,文件的atime、mtime、ctime的值都會自動被更新。 正如前面所說,這些值是可以改變的,所以,我們可以通過touch命令來修改這三個屬性的值。其實,touch並不是用來創建一個新的、空的文件的,而是用來修改這三個屬性的值的。但為什麼創建一個新的、空的文件呢?這是touch附帶的一個功能,原因是:如果你提供的目標文件參數並不存在的話,那麼touch就會出現錯誤,為了防止這種情況出現,touch命令就會默認創建一個所提供的目標文件參數;其實其他命令也是如此,有些命令,如果用戶沒有為它提供參數的話,它就會從標准輸入設備讀取參數,即讓用戶從標准輸入設備輸入參數,這樣的命令比比皆是。 要想修改一個文件下的所有文件的時間屬性,可以用touch命令,提供一個要修改時間屬性類型的參數和時間值,然後跟著該文件夾下的所有文件,引用方式是使用 *(星號),它可以匹配一個文件夾下的所有文件。