补充说明:stat以文字的格式来显示inode的内容。

ls 命令及其许多参数提供了一些非常有用的文件信息。另一个不太为人所熟知的命令 stat 提供了一些更为有用的信息。

下面演示了如何对可执行文件“oracle”(位于 $ORACLE_HOME/bin 目录下)使用此命令。 
  1. cd $ORACLE_HOME/bin   
  2. # stat oracle   
  3.   File: `oracle'   
  4.   Size: 93300148        Blocks:182424     IO Block:4096   Regular File   
  5. Device: 343h/835d       Inode: 12009652    Links: 1       
  6. Access: (6751/-rwsr-s--x)  Uid:(  500/  oracle)   Gid:(  500/     dba)   
  7. Access: 2006-08-04 04:30:52.000000000 -0400  
  8. Modify: 2005-11-02 11:49:47.000000000 -0500  
  9. Change: 2005-11-02 11:55:24.000000000 -0500  

注意使用该命令获得的信息:除了通常的文件大小(也可以使用 ls -l 命令获得)以外,您还获得了该文件占用的块数。通常的 Linux 块大小为 512 字节,因此一个大小为 93,300,148 字节的文件将占用 (93300148/512=) 182226.85 个块。由于块都是完整占用,因此该文件使用了一些整数个数的块。无需猜测就可以获得确切的块数。

您还可以从以上输出中获得文件所有权的 GID 和 UID,以及chmod.html' rel="nofollow" target='_blank'>权限的八进制表示形式 (6751)。如果要将文件恢复到它现在具有的相同权限,可以使用 chmod 6751 oracle,而不是显式拼写这些权限。

以上输出最有用的部分是文件访问时间戳信息。该输出显示,该文件被访问的时间是 2006-08-04 04:30:52(显示在“Access:”的旁边),即 2006 年 8 月 4 日上午 4:30:52。这是某个人开始使用数据库的时间。该文件的修改时间是 2005-11-02 11:49:47(显示在“Modify:”的旁边)。最后,“Change:”旁边的时间戳显示文件状态更改的时间。
stat 命令的修改符 -f 显示了有关文件系统(而非文件)的信息: 

  1. # stat -f oracle   
  2.   File: "oracle"  
  3.     ID: 0        Namelen:255     Type:ext2/ext3   
  4. Blocks: Total: 24033242   Free: 15419301   Available: 14198462   Size: 4096  
  5. Inodes: Total: 12222464   Free: 12093976     
  6.   
  7. 另一个选项 -t 显示了完全相同的信息,只不过是在一行中显示的:    
  8.   
  9. # stat -t oracle    
  10. oracle 93300148 182424 8de9 500 500 343 12009652 1 0 0 1154682061    
  11. 1130950187 1130950524 4096  

这对 shell 脚本非常有用,在 shell 脚本中可以使用一个简单的 cut 命令获得值以进行进一步处理

例: stat /var/log/messages | tail -2 | awk  '{print $2$3}' | cut -c0-10