用途:

stat命令用来查看文件信息

论述:

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

 与文件相关的几个时间:

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

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

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

[root@uyhd000225 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 *查看这个目录所有文件的状态

用法:

[root@pacteralinux testshell]# man stat
STAT(1)                          User Commands                         STAT(1)
NAME
       stat - display file or file system status
SYNOPSIS
       stat [OPTION]... FILE...
DESCRIPTION
       Display file or file system status.
       -L, --dereference
              follow links
       -Z, --context
              print the SELinux security context
       -f, --file-system
              display file system status instead of file status
       -c  --format=FORMAT
              use the specified FORMAT instead of the default; output a newline after each use of FORMAT
       --printf=FORMAT
              like --format, but interpret backslash escapes, and do not output a mandatory trailing newline.  If you want a newline, include \n in FORMAT.
       -t, --terse
              print the information in terse form
       --help display this help and exit
       --version
              output version information and exit
       The valid format sequences for files (without --file-system):
       %a     Access rights in octal
       %A     Access rights in human readable form
       %b     Number of blocks allocated (see %B)
       %B     The size in bytes of each block reported by %b
       %C     SELinux security context string
       %d     Device number in decimal
       %D     Device number in hex
       %f     Raw mode in hex
       %F     File type
       %g     Group ID of owner
       %G     Group name of owner
       %h     Number of hard links
       %i     Inode number
       %n     File name
       %N     Quoted file name with dereference if symbolic link
       %o     I/O block size
       %s     Total size, in bytes
       %t     Major device type in hex
       %T     Minor device type in hex
       %u     User ID of owner
       %U     User name of owner
       %x     Time of last access
       %X     Time of last access as seconds since Epoch
       %y     Time of last modification
       %Y     Time of last modification as seconds since Epoch
       %z     Time of last change
       %Z     Time of last change as seconds since Epoch
       Valid format sequences for file systems:
       %a     Free blocks available to non-superuser
       %b     Total data blocks in file system
       %c     Total file nodes in file system
       %d     Free file nodes in file system
       %f     Free blocks in file system
       %C     SELinux security context string
       %i     File System ID in hex
       %l     Maximum length of filenames
       %n     File name
       %s     Block size (for faster transfers)
       %S     Fundamental block size (for block counts)
       %t     Type in hex
       %T     Type in human readable form
       NOTE:  your  shell  may  have  its own version of stat, which usually supersedes the version described here.  Please refer to your shell’s documentation for details
       about the options it supports.
AUTHOR
       Written by Michael Meskes.
REPORTING BUGS
       Report stat bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report stat translation bugs to <http://translationproject.org/team/>
COPYRIGHT
       Copyright  2010 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is NO WARRANTY, to the extent permitted by law.
SEE ALSO
       stat(2)
       The full documentation for stat is maintained as a Texinfo manual.  If the info and stat programs are properly installed at your site, the command
              info coreutils 'stat invocation'
       should give you access to the complete manual.
GNU coreutils 8.4                  June 2012                           STAT(1)
(END)

解释:

stat(status)
功能说明:显示inode内容。
补充说明:stat以文字的格式来显示inode的内容。
root@bt:~# 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可读性较好的类型描述

事例:

[root@pacteralinux testshell]# stat -f -c '%T' /
ext2/ext3
[root@pacteralinux testshell]# stat -f -c %T /
ext2/ext3
[root@pacteralinux 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
[root@pacteralinux testshell]# stat -f -c %T /
ext2/ext3
[root@pacteralinux testshell]# stat -fc %T /
ext2/ext3
[root@pacteralinux 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
[root@pacteralinux 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