关于stat命令和时间戳

上篇文章我们介绍过stat命令,当时只是简单的提了提,这里我们详细讲解下关于stat和时间戳 

一、关于时间戳

每一个文件都有3中时间(称为时间戳timestamps),对这3种时间,很多时候容易混淆不清,因此 这里要说明下:  

Access time(atime):是指取用文件的时间,所谓取用,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,均衡改变文件的Access time.  

Modify time(mtime):是指修改文件内容的时间,只要文件内容有改动(如使用转向输出或转向附加的方式)或存盘的操作,就会改变文件的Modify time,平常我们使用ls �Cl查看文件时,显示的时间就是Modify time  

Change time(ctime):是指文件属性或文件位置改动的时间,如使用chmod,chown,mv指令集使用ln做文件的硬是连接,就会改变文件的Change time.  

Note:

如果修改文件(使用编辑器存盘或使用) >>转向操作),则Modify time和Change time  

会同步更新成写入的时间,但Access time不变。  

如果执行touch文件,则3中时间全部改变  

使用ln �Cs做文件的软式连接,会改变文件的取用时间  

使用ls �Cla查看一般文件,不会更改这三种时间,但如果这个文件时符号链接文件,则会改变取用的时间(Access time)

 

[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 �Cf /dev/sda1 

-f :表示取用的是文件系统(分区)而不是文件 

取得文件属性 

Stat filename 

Stat 基本语法格式:

Stat �Cc 格式代码 文件

格式代码:

针对文件(非全部列举)

%A:用文件权限代码来表示权限

%a:用数字代码来表示权限

%F:用八进制表示文件权限

%G:文件拥有者的组名 

%g:文件拥有者的属组id(gid) 

%i:inode编号 

%n:文件名 

%s:文件大小 

%U:文件拥有者名称 

%u:文件拥有者的id(uid) 

%x: 取用时间

%y: 修改时间

%z: 属性改动时间

[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 文件 

 

一般文件是没有设定特殊属性的

[root@lovelace scripts]# chattr 31r.sh
Must use '-v', =, - or +
[root@lovelace scripts]# lsattr 31r.sh
------------- 31r.sh

 

后记:关于stat名令可能工作中可以使用其他命令代替,对于查找系统文件的时间戳确实是一个很好的命令,

但是对于时间戳,我发现很多人都在群里问,touch的时候文件戳改变的是哪个,等等有关的问题,还有就是使用find命令的时候,对于时间的匹配不精确,希望大家能够很好的了解时间戳的概念,以便于更好的工作。

本文出自 “追马” 博客,谢绝转载!

你可能感兴趣的:(关于stat命令和时间戳)