分类信息网站系统cms,WordPress新闻面包屑主题,苏州公司网站建设找哪家,wordpress 非法词语目录
1.建立软连接 2.建立硬链接
3.什么是软链接
Linux中软链接的应用场景
4.什么是硬链接
5.文件与目录的硬链接数
6.软链接与硬链接的区别
用户无法对目录建立硬链接#xff0c;可以建立软连接。 在Linux中文件的链接有两种#xff1a;1.软连接 2.硬链接
1.建立软…目录
1.建立软连接 2.建立硬链接
3.什么是软链接
Linux中软链接的应用场景
4.什么是硬链接
5.文件与目录的硬链接数
6.软链接与硬链接的区别
用户无法对目录建立硬链接可以建立软连接。 在Linux中文件的链接有两种1.软连接 2.硬链接
1.建立软连接
建立软链接指令
ln -s 被链接文件名 建立链接名
举例为log文件建立一个软链接名字为log.soft.link 这里log.soft.link这个软链接指向了log这个文件。
同时我们通过指令
ll -li 这里我们可以发现log文件与软链接的inode编号是不一样的。说明log与软链接是两个互相独立的文件。 2.建立硬链接
建立硬链接指令
ln 被链接文件 链接名
举例为hello文件建立一个硬链接链接名为hello.hard.link 还是指令 ll -li 查看文件inode编号 我们发现hello文件与对应的硬链接的inode编号是一样的数字由1变成了2但是软连接并没有改变数字。 通过对比我们可以得出结论 软链接是一个独立的文件硬链接不是因为他没有独立的inode编号。 3.什么是软链接
Linux中的软链接与windows系统里桌面的快捷方式是相似的。 这里我们点击桌面快捷方式与在D盘的路径下点击Xshell.exe的效果是一样的都是打开Xshell这个软件。 这里既然点击快捷方式与运行.exe文件的效果相似那么为什么要有快捷方式呢
这是因为软件的.exe文件一般都会藏在较深的目录当中不方便用户查找因此才有文件的的快捷方式。 这里Linux使用软链接也是因为这个原因。
Linux中软链接的应用场景
这里我们创建一个myproc.c文件并编写代码用gcc编译生成可执行文件这里我们可以直接执行可执行文件。但是在未来公司里做一个项目并不是一个.exe文件直接暴露出来他可能把项目以特定的目录文件组织起来的里面有各种目录与文件。当我们每一次执行可执行程序时我们还得把他的整体路径全部打出来才可以执行。这里他太挫了因此这里我们可以直接给.exe文件建立一个软链接放到与项目目录同一个目录中这样我们每次执行.exe文件只需 ./软链接名 即可。
因此我们可以说软链接快速的帮我们定位到了文件。
如执行test1/test2目录里的myproc。 因此软连接我们可以理解为
是一个独立的文件有独立的indoe软链接内容是指向目标文件的路径。
4.什么是硬链接
这里我们解释硬链接以inode为切入口。
从上面的实验看硬链接不是一个独立的文件没有独立的inode。这意味着访问硬链接与被链接文件时访问的是同一个文件。 硬链接的本质是 在指定目录内部的一组映射关系文件名-inode的映射关系 以上面创建硬链接为例这里我们删除hello 这里我们可以发现 我们发现数字由2变为了1。 当我们为一个文件创建一个硬链接再把这个文件删掉相当于给这个文件重命名。 这里文件并没有并删除inode还存在那么什么时候一个文件才会被真正的删除呢 没有文件名与inode的映射关系。没有人用 我们知道文件是保存在磁盘上的那么对于文件系统来说他又是怎么知道这个文件没有人用的呢(文件怎么知道没有文件名指向自己)
这里inode结构体里有一个int ref_count 成员用作引用计数表明有几个文件名映射关系。当我们建立一个硬链接时不仅会在当前目录里新增一个文件名与inode的映射关系还会将inode里的引用计数加1。删掉一个文件时会将文件inode里的引用计数减1当引用计数为0时就会将文件真正的删掉。
注新建一个文件时文件inode里的引用计数为1
同时这里我们还可以解释变化的那个数字是什么 这里的数字是硬链接数记录了有多少个文件名指向对应的inode。
所以硬链接的本质是: 增加一个文件名与inode的映射关系。 5.文件与目录的硬链接数
这里我们新创建一个文件proj一个新目录newdir然后查看详细信息 那么这里为什么新建文件的硬连接数是1而目录的却是2呢
这是因为文件就有一个文件名与inode的映射关系。
而对于目录我们知道目录里有两个隐藏文件 . 当前目录 .. 上一级目录注这里的 . 与 .. 是硬链接 这里我们发现 . 的inode与newdir的inode是一样因此对于1446001这个inode编号对应的inode来说有两个文件名与inode的映射关系所以新建目录的硬链接数为2。同时也说明了为什么 . 表示当前目录inode一样
这里当我们在newdir里再新建一个目录dir 我们发现硬链接数变为了3.那这是因为什么呢
这里还是因为目录里的两个隐藏文件 这里我们可以发现在新建的dir目录里 .. 的inode与newdir的一样因此在一个目录newdir里新建一个目录dir导致多了一个文件名与inode的映射关系所以该目录newdir的硬链接数加1。同时也说明了为什么 .. 是上一级目录inode一样 6.软链接与硬链接的区别 软链接是一个独立的文件有自己的inode属性与内用。
而硬链接只是一个文件名与inode的映射关系保存在目录里。 用户无法对目录建立硬链接可以建立软连接。 实验证明 对根目录建立软链接 可以看出可以对目录建立链接里面内容与根目录一样。 对根目录建立硬链接 建立链接失败。 为什么不能对目录进行建立硬链接
这里我们知道Linux的目录结构是一个多叉树的样子 如果我们在结尾创建一个硬链接指向根目录。 这里硬链接的所在的目录就多了一个新文件名与根目录inode的映射关系。如果他允许这样子做那么我们在使用find命令时我们都要指定路径的然后会对路径里的文件名与inode进行对应查找如果当路径中出现硬链接时就会从硬链接所在目录直接查找到根目录的位置从而可能形成一个环形结构导致一直循环的进行查找。因此目录不能进行硬链接。
注目录里的 . 与 .. 是由操作系统设置的指向目录的硬链接是一个特殊情况。这里是为例方便用户切换到当前目录与上一级目录