赞
踩
给大家一句话:
人生,终究不允许你只做一个旁观者。 – 朱德庸
ᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤ
ᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤ
ᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤᕙ༼◕_◕༽ᕤ
上篇文章我们学习了文件系统,了解未打开的文件在磁盘中是如何储存的。
然后我们怎么寻找一个文件呢:
要找到指定文件 -> 首先要找到所在目录(逆向解析路径) ->找到文件的inode编号 -> 打开文件
操作系统必须通过路径来确定文件!!!
操作系统的命令也是同理,我们使用命令时会在环境变量中的PATH
中的路径进行寻找命令(可执行文件)
目录也是文件!目录里储存着文件名与inode编号的映射关系!!!
找到所在目录的过程与找指定文件过程一样,因为目录本质也是文件!就这样进行逆向的路径解析。 (逆向解析的过程会储存在缓存区中,方便下次提高效率)
目录是由进程提供的,内核文件系统提前写入并组织好了。
接下来我们就要来学习软硬链接了
先来看软连接:
我们先创建一个文件用来进行演示
来看奥:
ln -s file_target1.txt file_soft.link
那软链接有什么用呢?
我们想要使用myls
,就需要这样执行./bin/a/b/c/myls
,很是复杂。那么软链接就可以解决这个问题,我们建立一个“快捷方式”-软链接就可以:
我们就可以直接运行这个软链接就可以了:
所以软链接通常就是用来作为快捷方式的!!!可以链接可执行程序,可以链接路径比较深的文件等…
我们来看看Linux下的软链接:
来看一个:
这是一个软链接与目标文件,以后我们可以很平滑的替换目标文件,而保证上层使用不会出错(上层都是使用软链接来使用)。
再来看看硬链接:
同样创建一个文件来示范:
来看奥:
ln file_target2.txt file_soft.link
硬链接有什么用呢?
来看奥:
硬链接可以起到一个备份的作用,毕竟是一个独立的文件,并且具有目标文件的属性与数据。只是引用计数变回 1
。
硬链接就是一个文件名和inode的映射关系,建立硬链接,就是在指定目录下,添加一个 新的文件名和inode number的映射关系。
也就做到了备份的作用:
我们创建一个这样的文件夹:
我们可以在这里面进行创建硬链接。
如果在文件被删除的情况下,我们可以在backup中找到备份!!!
再来看个好玩的:
我们新建立的文件的引用数量是 1
这很好理解奥,再看:
哎嘿,新建的目录文件为什么引用计数就是2
呢?其实就是. ..
这两个文件在我们新建目录是就会创建!我们进入dir
来看看:
先不管..
引用计数为什么是 4 。.
的引用计数是2 ,并且inode与刚才的dir
一张,说明.
是对dir
的硬链接!我们再来在dir
里创建一个目录文件看看:
这时.
的引用计数变成了3
,为什么呢???因为在otherdir
下的..
同样指向的是dir
:
OK?这样刚才的..
引用计数为什么是4
也就可以理解了!
任何一个目录,该刚开始建立的时候,引用计数一定是2
(因为. ..
默认会创建),在该目录下每创建一个新目录,该目录的引用计数都会+1。一个目录下有几个目录 = 引用计数 - 2
那我们可不可以建立目录的硬链接呢???
不可以!!!系统不允许我们对目录进行硬链接!!!为什么?来看:
假如我们创建了一个指向根目录的硬链接
按照Linux操作系统的寻找文件的步骤,想要找到lesson23下的一个文件,就会从/
根目录进行深度优先搜索,那么寻找到root.hard
的时候,就会返回到/
,直接触发无限递归了!!!所以系统不允许我们建立目录的硬链接!!!
那为什么还有. ..
,这难道不是目录的硬链接吗,这难道就不会无限递归吗?
答案是不会!因为. ..
名称是固定的,系统可以辨别这两个硬链接,查找时不对. ..
进行处理。甚至我们也删除不了. ..
!!!
根据上面,我们可以总结一下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。