Linux系统stat指令用法
stat指令:文件/文件系统的详细信息显示。
stat命令主要用于显示文件或文件系统的详细信息,该命令的语法格式如下:
stat命令-->用来显示文件的详细信息,包括inode, atime, mtime, ctime
适用场景:
查看文件或目录的诸如atime,mtime,ctime等信息即可使用stat命令,也可使用ls命令,但相比而言,stat还可以看到设备号,环境等信息。
备注:
1) stat常用输出示意图:
2) 用于查看atime,mtime,ctime的ls命令用法:
3) stat命令的几点说明:
-f 不显示文件本身的信息,显示文件所在文件系统的信息
-L 显示符号链接
-C 文件权限
-t 简洁模式,只显示摘要信息
事实上,stat命令显示的是文件的I节点信息。Linux文件系统以块为单位存储信息,为了找到某一个文件所在存储空间的位置,用I节点对每个文件进行索引。
所谓的I节点,是文件系统管理的一个数据结构,是一个64字节长的表,包含了描述文件所必要的全部信息,其中包含了文件的大小,类型,存取权限,文件的所有者
查询rc.d文件的信息
[root@redhat rc.d]# stat rc0.d/ //可以清楚的分析文件或目录的信息
File: `rc0.d/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 1309217 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-06-26 21:02:26.776082938 +0800
Modify: 2014-06-12 15:16:57.848087079 +0800
Change: 2014-06-12 15:16:57.848087079 +0800
[root@redhat rc0.d]# du -sh //这个目录下的所有文件共4K和上面大小差不多
4.0K .
查询ec.d文件所在文件系统的信息:
[root@redhat rc.d]# stat -f rc0.d/ //这个显示的跟当前系统的文件系统信息一样,因为rc.0就在当前系统的文件系统
File: "rc0.d/"
ID: 303116b72802c784 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 7558388 Free: 5545748 Available: 5161800
Inodes: Total: 1921360 Free: 1850717
也可以查看硬盘的信息
[root@redhat rc.d]# stat /dev/sda
File: `/dev/sda'
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 5h/5d Inode: 6308 Links: 1 Device type: 8,0
Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk)
Access: 2014-06-27 20:57:07.213940088 +0800
Modify: 2014-06-27 20:57:05.037938949 +0800
Change: 2014-06-27 20:57:05.037938949 +0800
sda硬盘文件系统的信息
[root@redhat rc.d]# stat -f /dev/sda
File: "/dev/sda"
ID: 0 Namelen: 255 Type: tmpfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 61793 Free: 61734 Available: 61734
Inodes: Total: 61793 Free: 61080
Linux下使用stat命令所显示出来的三个时间
#1. [root@localhost tmp]# stat 1.txt
File: `1.txt'
Size: 8 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 196617 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2013-10-20 21:43:54.000000000 +0800
Modify: 2013-10-20 21:35:42.000000000 +0800
Change: 2013-10-20 21:35:42.000000000 +0800
#2. stat显示出inode的内容--inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
#3. IO Block:逻辑块的大小为4096个字节
Blocks:物理最小块是512,而IO Block为4096,所以这里就占用了8个物理块的意思
Access:atime
Modify:mtime,修改时间,注意这个不是建立时间,m不是make的意思
Change:ctime,改变时间
#4. 通过ls怎么查询这三个时间?
ls -lc filename 列出文件的 ctime
ls -lu filename 列出文件的 atime
ls -l filename 列出文件的 mtime --ll默认显示的就是这个时间
#5. 这三个时间不好区别,但必须区别好,因为很多应用会考虑到这些时间,比如在做同步备份时,会判断时间,大于上次备份时间的文件要再次同步等,或在查找文件何时变化,何时被黑客入侵,都会用到这个。
atime:访问时间,读取文件或者执行文件时会更改,命令如cat,vi
mtime:修改时间,文件的内容被改变时,就会更改,如vi
ctime:改变时间,文件的标签如属性、用户、用户组、权限、内容等被改变时,就会更改,如chmod,chown,vi
#6. 文件的时间戳(timestamp)是inode的内容之一,从inode来理解:ctime指inode上一次改变的时间,mtime指文件内容上一次修改的时间,atime指文件上一次打开的时间。
#7. atime不一定在访问文件之后被修改,因为:使用ext3文件系统的时候,如果在mount的时候使用了noatime参数那么就不会更新atime的信息,就是不想filesystem做太多的修改,而改善读取效能。
在linux系统下,使用stat(显示inode信息)命令可以查看一个文件的某些信息,我们先来尝试一下。
简单的介绍一下stat命令显示出来的文件其他信息:
- File:显示文件名
- Size:显示文件大小
- Blocks:文件使用的数据块总数
- IO Block:IO块大小
- regular file:文件类型(常规文件)
- Device:设备编号
- Inode:Inode号
- Links:链接数
- Access:文件的权限
- Gid、Uid:文件所有权的Gid和Uid。
Linux下的三个时间:
1. Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
2. Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
3. Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。
上面最开始的三个时间是一模一样的,原因是我在创建它的同时修改了它的内容,所以它的大小,Blocks也发生变化,也相当于一次访问,所以,我退出保存后三个时间一致。
下面进行一一验证。
1.atime(访问时间)的更新
2.mtime(修改时间)的更新
这里我使用echo指令向hello.cpp文件中写入了一行内容,惊讶的发现,不止mtime被更新了,而且ctime也被更新了。这是问什么呢?原因很简单,前面说过,ctime在文件大小,Blocks发生变化时也会被更新,所以仔细观察上图,这两项信息是否发生变化了呢?
3.ctime(状态时间)的更新
使用chmod指令修改hello.cpp的文件权限后,状态时间再次更新。
那如果不采取这些操作导致系统自己更新这三个时间,有没有办法人为改变这三个时间呢?答案是有的,请继续往下看~
touch命令
我们都知道touch命令是用来创建文件的,其实它的用法还有一个,就是修改文件的时间戳。
用法:
-a 或–time=atime或–time=access或–time=use 只更改访问时间。
-m 或–time=mtime或–time=modify 只更改修改时间
-d、-t 使⽤指定的⽇期时间,⽽⾮现在的时间
我们来试一试:
通过上图可以发现,我只是通过-a选项试图修改hello.cpp的访问时间,结果ctime(状态时间)也发生了改变。虽然实际上我用touch操作只改变了atime,但是由于文件的状态发生了变化,所以ctime就自己更新了。
没错,和上面一样,我只是通过-m选项改了文件的修改时间,ctime依然更新了。touch指令依然只是修改了修改时间,而状态时间是系统自己更新的。
Linux系统stat指令用法的更多相关文章
- (转)Linux系统stat指令用法
<Linux系统stat指令用法> 原文:https://www.cnblogs.com/linux-super-meng/p/3812695.html stat指令:文件/文件系统的详 ...
- <Linux系统isosize指令用法>
isosize命令:iso9660文件系统大小显示 isosize命令用于显示iso9660文件系统的大小,还文件可以使普通文件,也可以是块设备,如/dev/sr0或者/dev/sda.如果没有相关选 ...
- 100个linux系统常用指令
1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 通-a,但不列出"."和".."-l 列出文件 ...
- <Linux系统minfo命令用法>
minfo命令——ms-dos文件系统的各项参数的显示 minfo这个指令主要用于显示MS-DOS文件系统的各项参数,包括扇区数.磁头数.柱面数等. 参数主要有以下几个: -v 显示详细的参数 dri ...
- linux—find常见指令用法示例
Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强da的功能,所以它的选项也很多,其中大部分选项都值得我们花 ...
- Linux系统操作指令汇总
1.系统配置 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIO ...
- <Linux系统uname命令用法>
uname命令:操作系统信息的显示 uname 命令主要用于显示操作系统的信息,包括版本.平台的信息. 它的参数主要有以下: -a 显示全部信息 -s 显示内核名称 -n 显示主机名 -r 显示当前系 ...
- Linux系统常用指令
建立一个文件或文件夹的软链接: ln -s 原名 软链接名 软链接就类似Windows下的"快捷方式",访问它其实访问的是它指向的内容. git仓库操作 1.通常远程操作的第一步, ...
- linux 系统 tar 的用法详解
[root@localhost xu]# tar --help 用法: tar [选项...] [FILE]... GNU ‘tar’ 将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还 ...
随机推荐
- 帝国cms的list.var中使用php函数
$r[title] = esub($r[title],8,'...'); //截取前8个字符,多出部分用...代替 $r[title] = str_replace("lhj",&q ...
- vncserver的安装和使用 2
环境:RedHat Linux 6企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的, ...
- c++ c++ 与 Java
1.c++ c++ 如果1个类的定义中包含另一个类,那么在stdafx.h中 被包含的类必须放在包含类的前面,不然编译器找不到被包含类,c++没有包的概念,所以包含头文件时要注意顺序,而java不存在 ...
- C++类中静态成员函数
引述自<深入探索C++对象模型>2001:5:1版次,p-150 static member functions的主要特性就是它没有this指针,所以: 1.它不能直接存取其所在class ...
- python中 decimal不能直接应用于float数据
今天将程序部署到linux服务器上,出现很奇怪的现象. 在windows上运行正常的decimal,到了linux环境下不能正常运行,报出下面的错误. 代码为: income = get_dashbo ...
- 关于MFC中的OnPaint和OnDraw
当窗口发生改变后,会产生无效区域,这个无效的区域需要重画. 一般Windows会发送两个消息WM_PAINT(通知客户区 有变化)和WM_NCPAINT(通知非客户区有变化). 非客户区的重画系统自己 ...
- Android开发之程序猿必需要懂得Android的重要设计理念2(5.20更新版)
上篇文章介绍了Android开发的设计理念的一部分,并没有得到博友们的多大认可,仅仅看到了一位博友在以下留言期待下一篇文章的发表,为了这小小的唯一支持.我决定继续把后面的8个要点介绍一下,自己也潜心反 ...
- mybatis由浅入深day02_3一对多查询
3 一对多查询 3.1 需求(查询订单及订单明细的信息) 查询订单及订单明细的信息. 3.2 sql语句 确定主查询表:订单表 确定关联查询表:订单明细表 在一对一查询基础上添加订单明细表关联即可. ...
- Java精选笔记_集合【List(列表)接口】
List(列表)接口 简介 List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合. 元素是有序的,即元素的存入顺序和取出顺序一致, ...
- 九度 1500:出操队形(LIS变形)
题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往楼下跑了,然后身高矮的排在队伍的前面,身高较高的就要排在队尾.突然,有一天出操负责人想了一个 ...