上篇文章我們介紹過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
/2050d
inode: 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...