Linux软硬链接

news/2024/10/18 7:55:21/

文章目录

  • 一、建立连接
  • 二、软链接
  • 三、硬链接
  • 四、软硬链接应用场景


一、建立连接

ln可以用来建立链接,不过ln是建立硬链接,然后若是加选项-s则为建立软链接(ln -s)
建立软链接 ln -s 源文件 目标文件(链接名)
在这里插入图片描述
若是链接的是一个不存在的文件,则会出现指向错误
在这里插入图片描述
执行正常软链接能过执行但是执行错误软链接则不能执行
在这里插入图片描述
ln建立一个硬链接只是对这个文件取了一个别名,他们的inode是相同的
在这里插入图片描述
内核记录了硬链接链接个数,Inode为530047的硬链接个数为2,普通文件建立时它的硬链接数是1因为没有其他的硬链接指向这个文件。
而我们在删除文件时干了两件事情:1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。
删除链接可以使用unlink或者直接用rm(链接也是一个文件)删除

二、软链接

软链接是一种类似快捷方式的,就是在桌面上建立的快捷方式,建立了软链接这个软连接也是一个文件有自己的inode编号,软链接数据块中存的是它指向文件的地址(路径),当点击这个软连接时就是去执行这个地址对应的文件内容。软链接是一个独立的文件,当一个软链接删除时,不会影响它指向路径中的内容,但是若是将指向路径文件删除之后,软链接没有指向,这个软链接就会失败,找不到源头了,就像是桌面快捷方式删除不会对存储在电脑中的应用造成影响,但是若是电脑中应用删除,那么软链接再去查找就找不到对应软件!软链接建立是方便用户去到文件绝对路径去查找这一个软件,更加方便了用户只需要点击软链接就能执行同样的结果!

三、硬链接

硬链接就是相当于给一个文件取别名,硬链接不是一个独立的文件,他没有独立的inode编号。真正找到磁盘上文件的并不是文件名,而是inode。 其实在linux中可以让多个文件名对应于同一个inode。 硬链接两个文件一切都相同就是换了一个文件名,在上一级目录下,它的数据块中,inode与文件名的映射数量+1,而这也侧面证明了文件名不在当前目录下,不然同一个inode不会存在两个文件名。硬链接就是在特定目录的数据块中新增文件名和指向文件的inode编号的映射关系,每一个inode可以被多个文件名指向,统计硬链接数通常使用引用计数方式统计。增加一个硬链接就是在目录下将新的文件名和inode映射拷贝一份。所以任何一个文件,无论是目录还是普通文件都有Inode,每一个inode内部都有一个引用计数统计硬链接的数量目录中保存的是文件名:inode和文件名之间的映射关系.

四、软硬链接应用场景

软链接应用场景
就是一个快捷方式
系统中存在大量的软链接,用ls -/lib64/. -l查看
在这里插入图片描述
软链接应用场景最常见就是建立快捷方式
硬链接应用场景
创建一个目录,这个目录的硬连接数是2,而创建一个普通文件它的硬链接数是1.为什么?
在这里插入图片描述
因为任何一个目录下都有两个文件.文件和..文件
.代表当前文件,而..代表上一目录文件
在这里插入图片描述
因为.与当前目录的inode编号是一样的,而..和上一目录的inode编号一样,所以.是当前目录,..是上一级目录,所以.就相当于这一目录的一个别名,就是它的一个硬链接,而再在这一目录建立一个硬链接它的硬链接数会变为3 (理论上).每一个目录下都有...文件着更方便与路径的切换。Linux系统不允许对目录建立硬链接因为会形成环路问题,可能会出现系统及bug。所以当你在对目录建立硬链接时会阻止对目录建立硬链接!
硬链接通常应用于对路径来回切换


http://www.ppmy.cn/news/1427907.html

相关文章

HarmonyOS开发实例:【分布式手写板】

介绍 本篇Codelab使用设备管理及分布式键值数据库能力,实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程: 设备连接同一无线网络,安装分布式手写板应用。进入应用,点击允许使用多设备协同,点击主页上查询…

《MATLAB科研绘图与学术图表绘制从入门到精通》示例:绘制伊甸火山3D网格曲面图

11.4.2小节我们使用3D曲面图可视化分析伊甸火山数据,本小节我们采用3D网格曲面图可视化分析伊甸火山数据,以展示其地形,具体示例代码如下。 购书地址:https://item.jd.com/14102657.html

智慧化赋能园区新未来:探讨智慧园区如何以科技创新为引擎,推动产业转型升级

随着科技的飞速发展,智慧化已成为推动园区产业升级和转型的重要引擎。智慧园区,以其高效、便捷、智能的特性,正逐步改变传统的产业园区模式,为产业发展注入新的活力。本文旨在探讨智慧园区如何以科技创新为引擎,推动产…

esp32s3中使用双通道通信解决TCP粘包问题

在使用esp32 idf例程中的tcp_server和tcp_client通信测试时发现, 在tcp_server端,接收到一帧数据之后必须马上回复至少一个字节,才能保证每帧数据不粘包, 如果不回复操作,300ms以内的通信时延会导致tcp严重粘包&…

【R语言】混合图:小提琴图+箱线图

{ggstatsplot} 是 {ggplot2} 包的扩展,用于创建图形,其中包含信息丰富的绘图本身中包含的统计测试的详细信息。在典型的探索性数据分析工作流程中,数据可视化和统计建模是两个不同的阶段:可视化通知建模,而建模又可以建…

28、Lua 如何输出树状结构的table?

为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据。 ccmlog.lua local function __tostring(value, indent, vmap)local str indent indent or vmap vmap or {}--递归结束条件if (type(value) ~ table) thenif (type(value) string) then--字符…

Python学习笔记1:变量命名

跟学极客时间的教程系列笔记: 1) Python 还支持更灵活的动态解包语法。只要用星号表达式 (*variables)作为变量名,它便会贪婪 地捕获多个值对象,并将捕获到的内容作为 列表赋值给 variables。比如&#…

Java测试编程题

题目1 1.创建5个线程对象 线程名设置为(Thread01,Thread02,Thread03,Thread04,Thread05)使用 代码实现5个线程有序的循环打印,效果如下: Thread01正在打印1 Thread02正在打印2 Threa…