ls -l 或者ll查看文件,可以看到如下图所示:
ls -l 进程读取了存储在磁盘上的文件信息,然后显示出来
除了这个方式还有一个查看文件信息的方法是stat命令
我们可以关注inode的信息,一个文件只有一个inode号。这就必须了解我们的文件系统
简单的文件系统可以看成 超级块+i节点表+数据区
超级块存放文件的系统本身的信息----i节点表存放文件属性如文件大小,所有者,最近修改时间等---数据区存放文件内容
注意的一点:目录也是文件,文件的数据区存放的是目录包含的文件名和inode编号
所以如果我们要删除文件就只需要把文件对应的inode置0.
创建一个文件主要的4个操作:
1.存储属性
内核中找到一个空闲的i节点(这里是26666)。内核把文件信息记录在其中
2.存储数据
该文件需要三个磁盘块,内核找到三个空闲块:100,200,300。将内核缓冲区的第一块数据复制到100,依次累推进行存储
3.记录分配情况
文件内容顺序100,200,300存放,内核在inode上的磁盘分布区记录上述块列表
4.添加文件名到目录
新的文件名为test.c。内核入口将(26666,test.c)添加到目录文件。文件名和inode之间的对应关系将文件名和inode的属性链接起来。
文件硬链接
磁盘上的文件并不是文件名而是inode
我们对文件如下操作会有发现
inode是一样的,打开文件内容也是一样的,这也就是文件的硬链接。内核记录了这个36003219文件的链接数为2。
当我问要删除文件时干了两件事:1.在目录中删除对应的文件记录,2.将硬链接数减1,如果为0则将对应的磁盘资源进行释放。
文件软链接
我们可以通过ln -s来创建软链接来看看
我们可以发现:与硬链接最大的不同是软链接具有自由的inode。软链接存放个是如何找hi.c的路径。
如果目录中的文件特别隐藏,就可以用软链接。windows下的快捷方式就相当于软链接。
啦啦啦!!!就说到这里了