查找命令

 
whereis 查找程序名,除了二进制文件,还查找说明文件,源代码

linux 文件

文件存储在硬盘上,最小的存储单位为扇区,一般为512B,读写时一般读写连续的若干扇区(一般为8个扇区,共4KB),这若干个扇区为一个块 block。

linux 中文件存储之inode节点

    linux 中每个文件对应一个inode节点,inode节点存储文件的元数据,比如 文件的字节数、文件的所有者uid、文件的所有组 gid、文件的rwx权限,文件的时间戳,硬链接数,文件数据block的位置。

 
每个inode节点的大小一般为128字节或256字节。inode节点的总数,在格式化的时候就给定,一般是每1KB或2KB就设置一个inode。

    查看每个硬盘分区的inode总数和已经使用的数量,可以使用命令 df -i。 由于每个文件必须有一个inode,因此可能发生inode已经用光,但是硬盘还未存满的情况,此时也无法创建新文件了。

 
(3) 通过inode信息,找到文件所在的block,读取数据

 
    目录也是一种文件,目录文件中存放的是文件路径和文件inode的对应关系;

 
    一个文件的软链接是一个新的文件,它的inode号和原文件不同,软链接文件中的内容为原文件的路径。读取软链接时,系统自动将访问者导向原文件。增加软链接,文件的inode中的链接数不变,当删除原文件时候,软链接会失效。

ls和du

 
比如当前文件夹下有三个文本文件 a.h, b.h, c.h 和一个空目录d。当执行 ls -al,显示:

  1. [skc@server tmp]$ ls -lih
  2. total 12K
  3. 2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 a.h
  4. 2154514158 -rw-rw-r-- 1 skc skc 500 Oct 20 01:38 b.h
  5. 2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 c.h
  6. 2328340913 drwxrwxr-x 2 skc skc 6 Oct 20 01:36 d

 
向d中添加一个文件之后, d的大小扩展为20字节,说明一个文件-inode的对应占用14字节!(因系统而异)

  1. [skc@server tmp]$ ls -lih
  2. total 12K
  3. 2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 a.h
  4. 2154514158 -rw-rw-r-- 1 skc skc 500 Oct 20 01:38 b.h
  5. 2328340912 -rw-rw-r-- 2 skc skc 46 Oct 20 01:38 c.h
  6. 2328340913 drwxrwxr-x 2 skc skc 20 Oct 20 01:43 d

 
    du -sh 查询当前文件夹下的文件所占的磁盘空间大小。

  1. skc@server tmp]$ du -sh *
  2. 4.0K a.h
  3. 4.0K b.h
  4. 12.0K d

如上所示,a.h 和 b.h 都占据4K大小的磁盘块,因为文件在磁盘中是按照块来读写的。基本的单位为一个磁盘块的大小,所以文件所占据磁盘空间总是4K大小的整数倍。而 c.h 为 a.h的硬链接,所以和a.h共享同一个磁盘块,因此不显示。目录d的占据磁盘空间大小为d下所有文件的磁盘空间大小的总和。

相关文章: