關於stat命令和時間戳

2021-09-21 23:28:14 字數 4048 閱讀 2959

上篇文章我們介紹過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不變。  

如果執行touc**件,則3中時間全部改變  

使用ln –s做檔案的軟式連線,會改變檔案的取用時間  

使用ls –la檢視一般檔案,不會更改這三種時間,但如果這個檔案時符號鏈結檔案,則會改變取用的時間(access time)

1

2

3

4

5

6

7

8

[root@lovelace scripts]# stat 31r.sh

file: 「31r.sh」

size: 128         blocks: 16         io block: 4096   一般檔案

device: 802h/2050dinode: 1103971     links: 1

access: (0755/-rwxr-xr-x)  uid: (    0/    root)   gid: (    0/    root)

access: 2013-05-20 18:37:38.000000000 +0800

modify: 2013-05-09 00:02:36.000000000 +0800

change: 2013-05-09 00:02:36.000000000 +0800

關於時間戳的使用,在系統運維中,時間戳是至關重要的,尤其是配合find命令使用更是大大簡化了我們的工作。有關find的用法,我們在下乙個小節中將詳細講解。

二、關於stat命令

stat是獲取關於檔案的額外資訊,獲得兩種資訊: 

1、 檔案系統 

2、 檔案 

基本用法: 

取得檔案系統屬性 

stat –f /dev/sda1 

-f :表示取用的是檔案系統(分割槽)而不是檔案 

取得檔案屬性 

stat filename 

stat 基本語法格式:

stat –c 格式** 檔案

格式**:

針對檔案(非全部列舉)

%a:用檔案許可權**來表示許可權

%a:用數字**來表示許可權

%f:用八進位制表示檔案許可權

%g:檔案擁有者的組名 

%g:檔案擁有者的屬組id(gid) 

%i:inode編號 

%n:檔名 

%s:檔案大小 

%u:檔案擁有者名稱 

%u:檔案擁有者的id(uid) 

%x: 取用時間

%y: 修改時間

%z: 屬性改動時間 1

2

3

4

5

6

7

8

9

10

[root@lovelace scripts]# stat -c %y 31r.sh

2013-05-09 00:02:36.000000000 +0800

[root@lovelace scripts]# stat -c %g 31r.sh

0

[root@lovelace scripts]# stat -c %g 31r.sh

root

[root@lovelace scripts]# stat -c %u 31r.sh

0

[root@lovelace scripts]# stat -c %u 31r.sh

root

針對臨時檔案覆蓋原始檔的時候,stat命令就會發揮很大的功效

針對檔案系統: 

%a: 一般使用者可自由使用的區塊數 

%b: 全部的區塊數 

%c: 全部的檔案節點數 

%d: 可取用的檔案節點數 

%f: 可取用的區塊數 

三、關於chattr和lsattr設定和檢視檔案特殊屬性

chattr命令的屬性: 

chattr:增加特殊屬性: 

chattr + 屬性** 檔案 

+   表示個個屬性可個別地加上,不影響檔案其他原有的特殊屬性 

=    表示直接指定檔案的屬性,原已存在單位被指定的屬性會消失 

-    表示移除某些屬性 

屬性:

a:檔案的取用時間不改變 

i:不能修改檔案  只有root才可以操作 

d:該檔案不需要用dump做備份 

lsattr命令: 

lsattr:檢視修改的結果 

lsattr 檔案 

一般檔案是沒有設定特殊屬性的

1

2

3

4

[root@lovelace scripts]# chattr 31r.sh

must use'-v', =, - or +

[root@lovelace scripts]# lsattr 31r.sh

------------- 31r.sh

後記:關於stat名令可能工作中可以使用其他命令代替,對於查詢系統檔案的時間戳確實是乙個很好的命令,

但是對於時間戳,我發現很多人都在群裡問,touch的時候檔案戳改變的是哪個,等等有關的問題,還有就是使用find命令的時候,對於時間的匹配不精確,希望大家能夠很好的了解時間戳的概念,以便於更好的工作。

mysql關於時間戳

想讓mysql每條插入的資料中自動存入時間,精確毫秒,每次修改行的時候,自動存入時間,精確毫秒 如果只顯示年月日時分秒,則把6去掉即刻 create table test1 text varchar 30 createdtime timestamp 6 not null default curren...

linux date命令時間戳和時間之間的轉換

非常多時候我們檢視資料庫的資料,或者是一些別人系統中的資料須要用時間戳來查詢。或者查詢出來的結果是個時間戳。這裡是在mac下的操作。主要就是用date這個命令,很多其它的使用方法用man命令檢視 我們知道date 命令能夠直接把當前時間轉化為時間戳 date s 1436781527然後這裡我們把自...

Linux date命令時間戳和時間之間的轉換

這裡是在mac下的操作,主要就是用date這個命令,更多的用法用man命令檢視 字串格式時間 to 時間戳 我們知道date 命令可以直接把當前時間轉化為時間戳 date s 1436781527 linux下不支援自定義的格式轉化為時間戳,下面幾種可以 date d 06 12 2018 07 2...