上篇文章我们介绍过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命令的时候,对于时间的匹配不精确,希望大家能够很好的了解时间戳的概念,以便于更好的工作。