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