上篇文章我們介紹過stat指令,當時隻是簡單的提了提,這裡我們詳細講解下關于stat和時間戳
一、關于時間戳
每一個檔案都有3中時間(稱為時間戳timestamps),對這3種時間,很多時候容易混淆不清,是以 這裡要說明下:
Access time(atime):是指取用檔案的時間,所謂取用,常見的操作有:使用編輯器檢視檔案内容,使用cat指令顯示檔案内容,使用cp指令把該檔案(即來源檔案)複制成其他檔案,或者在這個檔案上運用grep sed more less tail head 等指令,凡是讀取而不修改檔案的操作,均衡改變檔案的Access time.
Modify time(mtime):是指修改檔案内容的時間,隻要檔案内容有改動(如使用轉向輸出或轉向附加的方式)或存盤的操作,就會改變檔案的Modify time,平常我們使用ls –l檢視檔案時,顯示的時間就是Modify time
Change time(ctime):是指檔案屬性或檔案位置改動的時間,如使用chmod,chown,mv指令集使用ln做檔案的硬是連接配接,就會改變檔案的Change time.
Note:
如果修改檔案(使用編輯器存盤或使用) >>轉向操作),則Modify time和Change time
會同步更新成寫入的時間,但Access time不變。
如果執行touch檔案,則3中時間全部改變
使用ln –s做檔案的軟式連接配接,會改變檔案的取用時間
使用ls –la檢視一般檔案,不會更改這三種時間,但如果這個檔案時符号連結檔案,則會改變取用的時間(Access time)
關于時間戳的使用,在系統運維中,時間戳是至關重要的,尤其是配合find指令使用更是大大簡化了我們的工作。有關find的用法,我們在下一個小節中将詳細講解。
二、關于stat指令
Stat是擷取關于檔案的額外資訊,獲得兩種資訊:
1、 檔案系統
2、 檔案
基本用法:
取得檔案系統屬性
Stat –f /dev/sda1
-f :表示取用的是檔案系統(分區)而不是檔案
取得檔案屬性
Stat filename
Stat 基本文法格式:
Stat –c 格式代碼 檔案
格式代碼:
針對檔案(非全部列舉)
%A:用檔案權限代碼來表示權限
%F:用八進制表示檔案權限
%G:檔案擁有者的組名
%g:檔案擁有者的屬組id(gid)
%i:inode編号
%n:檔案名
%s:檔案大小
%U:檔案擁有者名稱
%u:檔案擁有者的id(uid)
%x: 取用時間
%y: 修改時間
%z: 屬性改動時間
針對檔案系統:
%a: 一般使用者可自由使用的區塊數
%b: 全部的區塊數
%c: 全部的檔案節點數
%d: 可取用的檔案節點數
%f: 可取用的區塊數
三、關于chattr和lsattr
chattr指令的屬性:
chattr:增加特殊屬性:
chattr + 屬性代碼 檔案
+ 表示個個屬性可個别地加上,不影響檔案其他原有的特殊屬性
= 表示直接指定檔案的屬性,原已存在機關被指定的屬性會消失
- 表示移除某些屬性
屬性:
a:檔案的取用時間不改變
i:不能修改檔案 隻有root才可以操作
D:該檔案不需要用dump做備份
lsattr指令:
lsattr:檢視修改的結果
lsattr 檔案
後記:關于stat名令可能工作中可以使用其他指令代替,對于查找系統檔案的時間戳确實是一個很好的指令,
但是對于時間戳,我發現很多人都在群裡問,touch的時候檔案戳改變的是哪個,等等有關的問題,還有就是使用find指令的時候,對于時間的比對不精确,希望大家能夠很好的了解時間戳的概念,以便于更好的工作。