当我们使用ls-i指令查看文件信息时,会发现文件名前面有一个数字,这个数字是inode。我们也可以使用stat指令查看文件的详细信息,如下
为了讲清楚inode,我们从磁盘开始说起
文件 = 属性+内容。属性和内容在磁盘上是分开保存的。如上图所示,我们在创建一个文件的时候,过程是这样的:
删除一个文件的时候,只要根据inode将对应的inode bitmap和Block Bitmap置为0,不需要管数据块上面的内容,所以删除很快,写入较慢
我们知道,Linux下一切皆文件,目录也可以看做一个文件。那么我们再来理解一下创建目录的过程。既然目录也是文件,那么他就一定也有属性和内容。创建方式同上
上图中的数字就是硬链接数。当我们创建一个空目录发现硬链接数是2,创建一个文件硬链接数是1。这是由于当我们进入dir1,会有一个“.”指的是当前目录。可以说这个".“是dir1的别名,而如果我们在dir1里面再创建一个dir2之后我们发现dir1的硬链接数变为2,这是因为我们进入dir2,之后有一个”…",他也是dir1的别名。并且他们三个的inode号是相同的,本质上没有创建新文件。所有当我们看到一个目录的硬链接数n,就可以知道该目录里面有(n-2)个子目录。所以我们在删除硬链接文件的时候,硬链接数–,当硬链接数为0时才删除数据块中保存的内容
创建软连接方法如下
创建之后我们发现他们两个的inode号不一样,所以软链接出来的文件与原文件是不同的文件,是一个独立的文件。该文件的内容是test.c的路径,这就像我们Windows下的快捷方式
创建硬链接方法如下
st.c的路径,这就像我们Windows下的快捷方式
创建硬链接方法如下