欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

linux stat

程序员文章站 2022-06-19 11:33:21
...

用途:

stat命令用来查看文件信息

论述:

在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间。也就是说不能知道文件的创建时间。但如果文件创建后就没有修改过,修改时间=创建时间;如果文件创建后,状态就没有改变过,那么状态改变时间=创建时间;如果文件创建后,没有被读取过,那么访问时间=创建时间,这个基本不太可能。

 与文件相关的几个时间:

1、访问时间,读一次这个文件的内容,这个时间就会更新。比如对这个文件使用more命令。ls、stat命令都不会修改文件的访问时间。

2、修改时间,对文件内容修改一次,这个时间就会更新。比如:vi后保存文件。ls -l列出的时间就是这个时间。

3、状态改变时间。通过chmod命令更改一次文件属性,这个时间就会更新。查看文件的详细的状态、准确的修改时间等,可以通过stat命令 文件名。

[[email protected] shelltest]# stat filesystemcheck.sh
  File: “filesystemcheck.sh”
  Size: 150             Blocks: 8          IO Block: 4096   一般文件
Device: 301h/769d       Inode: 12256000    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-01-07 13:12:05.000000000 +0800
Modify: 2014-01-07 13:12:03.000000000 +0800
Change: 2014-01-07 13:12:03.0000

说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态
解释:

stat(status)
功能说明:显示inode内容。
补充说明:stat以文字的格式来显示inode的内容。
[email protected]:~# stat --help
用法:stat [选项]... 文件...
显示文件或文件系统的状态。
  -L, --dereference跟随链接
 -f, --file-system显示文件系统状态而非文件状态
  -c --format=格式使用指定输出格式代替默认值,每用一次指定格式换一新行
      --printf=格式类似 --format,但是会解释反斜杠转义符,不使用换行作
输出结尾。如果您仍希望使用换行,可以在格式中
加入"\n"
 -t, --terse使用简洁格式输出
      --help显示此帮助信息并退出
      --version显示版本信息并退出
有效的文件格式序列(不使用 --file-system):
  %a八进制权限
 %A   用可读性较好的方式输出权限
  %b   计算已分配块数(参见%B)
  %B   以字节为单位输出%b 所报告的每个块的大小
  %C   SELinux 安全环境字符串
  %d十进制设备编号
  %D十六进制设备编号
  %f十六进制原始模式
  %F文件类型
 %g文件的属组ID
  %G文件的属组组名
  %h硬链接数量
  %iInode 编号
  %n文件名
  %N如果对象是一个符号链接,显示引用到的其它文件名
  %oI/O 块大小
  %s总计大小,以字节为单位
  %t十六进制主设备类型
  %T十六进制子设备类型
  %u文件的属主ID
  %U文件的属主用户名
  %x上次访问时间
  %X从UNIX 元年起计的上次访问时间
  %y上次修改时间
  %Y从UNIX 元年起计的上次修改时间
  %z上次更改时间
  %Z从UNIX 元年起计的上次更改时间
有效的文件系统格式序列:
  %a非超级用户可用的剩余块数
  %b文件系统的总数据块数
  %c文件系统中文件节点总数
  %d文件系统中空闲文件节点数
  %f文件系统中空闲块数
  %CSELinux 安全环境字符串
  %i十六进制文件系统ID
  %I允许的文件名最大长度
  %n文件名
  %s块大小(用于快速传输)
  %S基本块大小(用于块计数)
  %t十六进制类型描述
  %T可读性较好的类型描述

示例

[[email protected] testshell]# stat -f -c '%T' /
ext2/ext3
[[email protected] testshell]# stat -f -c %T /
ext2/ext3
[[email protected] testshell]# stat -f  %T /
stat: cannot read file system information for `%T': No such file or directory
  File: "/"
    ID: 1cbc925161e0f14 Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 7488502    Free: 1611667    Available: 1231264
Inodes: Total: 1905008    Free: 1776613
[[email protected] testshell]# stat -f -c %T /
ext2/ext3
[[email protected] testshell]# stat -fc %T /
ext2/ext3
[[email protected] testshell]# stat /var/log/messages
  File: `/var/log/messages'
  Size: 227             Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d      Inode: 788229      Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2014-01-06 12:28:53.604164323 +0800
Modify: 2014-01-06 12:28:52.603169898 +0800
Change: 2014-01-06 12:28:52.603169898 +0800
[[email protected] testshell]#  stat /var/log/messages | tail -2 | awk  '{print $2"+++++++"$3}'
2014-01-06+++++++12:28:52.603169898
2014-01-06+++++++12:28:52.603169898