Linux--软硬链接

目录

0.文件系统

 1.软硬链接

1.1见一下软硬链接

1.2软硬链接的特征

1.3软硬链接是什么,有什么作用(场景)


0.文件系统

Linux--文件系统-CSDN博客


 1.软硬链接


1.1见一下软硬链接

1.这是软链接

这个命令在Unix和Linux系统中用于创建一个符号链接(也称为软链接或软连接)。具体来说,ln -s file2.txt file_soft.link 命令做了以下事情:

  1. -s:这是一个选项,表示要创建一个符号链接(而不是硬链接)。
  2. file2.txt:这是你要链接到的原始文件或目录。
  3. file_soft.link:这是你要创建的符号链接的名称。

        执行这个命令后,file_soft.link 就会成为一个指向 file2.txt 的符号链接。你可以像操作普通文件一样操作 file_soft.link,但实际上你只是在操作 file2.txt。例如,如果你使用 cat 命令查看 file_soft.link 的内容,你将会看到 file2.txt 的内容。

可以看到它们的inode是不一样的


2.这是硬链接

和建立软连接的区别就是,少了一个-s选项。

使用 cat 命令查看 file_hard.link 的内容,你将会看到 file1.txt 的内容。

可以看到它们的inode是一样的。

1.2软硬链接的特征

根据上面的现象:

硬链接的特征

  1. 硬链接是指向文件系统中已存在文件的引用,它们与原始文件共享相同的inode(索引节点)号和数据块。
  2. 硬链接只是文件的另一个名称或别名,它们与原始文件没有区别。
  3. 硬链接只能对已经存在的文件进行创建,不能跨文件系统或分区。
  4. 硬链接不能对目录进行创建,只能对文件创建。
  5. 删除一个硬链接文件并不会影响其他具有相同inode号的文件。只有当所有硬链接和原始文件都被删除时,文件的数据块才会被释放。

软链接(符号链接)的特征

  1. 软链接是一个特殊的文件,其数据块内容是它所链接文件的路径名。
  2. 软链接可以跨越文件系统或分区,因为它只是保存了目标文件的路径。
  3. 软链接可以对文件或目录进行创建。
  4. 如果删除软链接所指向的原始文件,软链接就会变成“死链接”,因为它指向的文件已经不存在了,如果将软链接文件删除了,更不会影响目标文件,软链接就相当于一个快捷方式从。
  5. 软链接有自己的inode号,但与原始文件不同。

软硬链接的区别

  1. inode号:硬链接与原始文件共享相同的inode号,而软链接则有自己的inode号。
  2. 跨文件系统:软链接可以跨文件系统或分区创建,而硬链接则不能。
  3. 对目录的引用:硬链接不能对目录进行创建,而软链接可以。
  4. 删除影响:删除一个硬链接文件并不会影响其他具有相同inode号的文件;而删除软链接所指向的原始文件,则会使软链接变成“死链接”。
  5. 文件类型:硬链接不是特殊的文件类型,它与原始文件完全一致;而软链接是特殊的文件类型,其数据块内容是目标文件的路径名。

我们还发现属性中有一列硬链接数


1.3软硬链接是什么,有什么作用(场景)

1.软链接的使用场景:

假如我有一个这样的项目结构;

然后我们再拷贝一个ls变成自己的可执行程序myls:

那如果我们的可执行程序被放到了一个很深的路径下,我们就只能这样运行我们的可执行程序,这就十分的麻烦了

        创建软链接(快捷方式),所以软连接就是一个快捷方式,方便我们访问/执行我们的目标文件。

系统下的软链接:我们系统中有各种的库,一般就用软链接的方式,让我们使用它们的名字,就能找到对应的库


2.硬链接的使用场景:

我们给file1.txt建立了硬链接,我们可以看到硬链接(磁盘级的引用计数)数变成了2.

        其实,硬链接就是一个文件名和inode的映射关系,建立硬链接,就是再指定目录下,添加一个新的文件名和inode number 的映射关系。inode number就像一个指针,有两个一样的inode number指向同一个属性,所以它的引用计数就是2(有2个文件名字符串通过inode number指向我的inode)。删除一个文件名和inode的关系,引用计数就变为1,再将硬链接删除,引用计数变为0,此时文件才会被删除。

        1.硬链接主要用于在文件系统中为同一物理文件创建多个访问路径。例如,你可能希望在不复制文件内容的情况下,将某个文件同时放置在多个目录中。这时,你可以使用硬链接。这种方式也可以被理解成,为目标文件建立备份。

        2.硬链接构建Linux的路径结构,让我们可以使用. ..来进行路径定位。

        我们新建了一个目录test,当我们说一个目录的引用计数为2时,这通常是因为每个目录在其父目录中都有一个条目(即一个硬链接),并且它自己还有一个指向自己的.(当前目录)的硬链接。像bin目录引用计数为3,这是因为bin内部还存在一个目录指向通过inode number指向自己。

        在Linux中是不允许对目录  建立硬链接的,这会导致目录循环。例如,如果目录A硬链接到目录B,而目录B又硬链接回目录A,那么在遍历目录结构时,系统可能会陷入无限循环,导致无法正确定位或访问目录。

至此我们可以知道定位一个文件,只有两种方式:

        1.通过路径(软连接)

        2.直接找到目标文件的inode(通过inode number)(硬链接)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/640929.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL刷题笔记day3——第二大值

1题目 我的错误代码: select emp_no,salary from salaries where salary (select salary from salaries group by salary order by salary limit 1,1 ) order by emp_no asc 正确代码: select emp_no,salary from salaries where salary (select sal…

jellyfish安装及使用(Bioinformatics工具-020)

01 背景 基因组survey以测序技术为基础,基于小片段文库的低深度测序,通过K-mer分析,快速获得基因组大小、杂合度、重复序列比例等基本信息,为制定该物种的全基因组de novo测序策略提供有效依据。 jellyfish (水母) 是一个用于快…

Cisco Nexus Leaf上线注册到APIC,并配置带外管理IP操作方法

现场2台Nexus93108交换机需要注册到APIC上,成为Leaf交换机。 在ACI的架构中,所有Leaf节点交换机要连接到SPINE交换机上,我们的spine交换机型号为Nexus 9364 Leaf N93108TC-EX长这样, 前面是48个万兆电口,后面6个端口支持40G或100…

maven打包报错:MalformedInputException: Input length = 1

maven 打包时报错: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.1:resources (default-resources) on project ec-work-mes: filtering /Users/ecmaster/svn/ecmaster/ynmk/ynmk-mes/ec-work/ec-work-mes/src/main/resou…

Linux配置nginx代理功能

ywtool运维工具下载链接及介绍: 工具下载/介绍/安装页面 目录 一.nginx proxy功能介绍二.配置nginx proxy功能2.1 新增nginx代理配置2.1.1 反向代理(当前只举例https转https)2.1.2 负载均衡(当前只举例https转https) 2.2 修改nginx代理配置2.2.1 手动修改配置文件2.2.2 通过此脚…

利用java8 的 CompletableFuture 优化 Flink 程序,性能提升 50%

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

【数据结构】线性表习题 |顺序表 |链表 |栈和队列

📖专栏文章:数据结构学习笔记 🪪作者主页:格乐斯 前言 线性表习题 |顺序表 |链表 |栈和队列 顺序表和链表 1、 选B 1002(5-1)108* 第i个元素地址X,元素长度Len,第j个元素地址Y 公式:YXL…

Docker进入容器查看内容并从容器里拷贝文件到宿主机

工作中需要从docker正在运行的镜像中复制文件到宿主机,于是便将这个过程记录了下来。 (1)查看正在运行的容器 通过以下命令,可以查看正在运行的容器: docker ps (2)进入某个容器执行脚本 我…

备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析(持续)

多做真题,吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一,通过做真题,可以帮助孩子找到真实竞赛的感觉,而且更加贴近比赛的内容,可以通过真题查漏补缺,更有针对性的补齐知识的短板。 今天我们继续…

Android Audio基础——AudioFlinger回放录制线程(七)

AndioFlinger 作为 Android 的音频系统引擎,重任之一是负责输入输出流设备的管理及音频流数据的处理传输,这是由回放线程 PlaybackThread 及其派生的子类和录制线程 RecordThread 进行的。 一、基础介绍 1、关系图 ThreadBase:PlaybackThread 和 RecordThread 的基类。 Re…

群晖NAS使用Docker部署WPS Office结 合内网穿透实现远程编辑本地文档

文章目录 1. 拉取WPS Office镜像2. 运行WPS Office镜像容器3. 本地访问WPS Office4. 群晖安装Cpolar5. 配置WPS Office远程地址6. 远程访问WPS Office小结 7. 固定公网地址 wps-office是一个在Linux服务器上部署WPS Office的镜像。它基于WPS Office的Linux版本,通过…

redis--redis Cluster

简介 解决了redis单机写入的瓶颈问题,即单机的redis写入性能受限于单机的内存大小、并发数量、网卡速率等因素无中心架构的redis cluster机制,在无中心的redis集群当中,其每个节点保存当前节点数据和整个集群状态,每个节点都和其他所有节点连…

Redis机制-Redis互斥锁、分布式锁

目录 一 互斥锁 二 分布式锁 Redis实现分布式锁 redisson实现分布式锁 可重入性: 主从一致性(性能差): 一 互斥锁 假设我们现在有一个业务要实现秒杀优惠券的功能,如果是一个正常的流程,线程之间应该…

ThreadLocal为什么会导致内存泄漏?

问题引出: ThreadLocal是为了解决什么问题而产生的? ThreadLocal发生内存泄漏的根本原因是什么? 如何避免内存泄漏的发生?定义 为了解决多个线程同时操作程序中的同一个变量而导致的数据不一致性的问题。   假设现在有两个线程A…

【C++题解】1696. 请输出1~n之间所有的整数

问题:1696. 请输出1~n之间所有的整数 类型:循环 题目描述: 从键盘读入一个整数 𝑛n ,请循环输出 1∼n 之间所有的整数,每行输出 1 个。 比如,假设 n5 ,那么输出结果如下: 1 2 3 4 …

微调Llama3实现在线搜索引擎和RAG检索增强生成功能

视频中所出现的代码 Tavily SearchRAG 微调Llama3实现在线搜索引擎和RAG检索增强生成功能!打造自己的perplexity和GPTs!用PDF实现本地知识库_哔哩哔哩_bilibili 一.准备工作 1.安装环境 conda create --name unsloth_env python3.10 conda activate …

我用 Midjourney 的这种风格治愈了强迫症

在 Midjourney 能够实现的各种布局之中,有两种风格因其简洁、有序而独居魅力,它们就是平铺 (Flat Lay) 和 Knolling (Knolling 就是 Knolling, 无法翻译🤣)。要在现实生活中实现这样的美学效果并不容易,你需要精心挑选各种小物件&…

【JAVA WEB实用与优化技巧】如何自己封装一个自定义UI的Swagger组件,包含Swagger如何处理JWT无状态鉴权自动TOKEN获取

目录 一、Swagger 简介1. 什么是 Swagger?2. 如何使用 Swagger3. Springboot 中swagger的使用示例1. maven 引入安装2. java配置 二、Swagger UI存在的缺点1.不够方便直观2.请求的参数没有缓存3.不够美观4.如果是JWT 无状态登录,Swagger使用起来就没有那…

MVCC相关

文章目录 前情要点基于什么引擎并发事务产生的问题不可重复读和幻读区别Next-Key Lock的示例解决并发事务采用的隔离级别当前读(Current Read)快照读(Snapshot Read)参考 MVCC定义表里面的隐藏字段由db_roll_ptr串成的版本链ReadView可见性算法mvcc的可见性算法为什么要以提交的…

编译器 编译过程 compiling 动态链接库 Linking 接口ABI LTO PGO inline bazel增量编译

编译器 编译过程 compiling 动态链接库 Linking 接口ABI LTO PGO Theory Shared Library Symbol Conflicts (on Linux) 从左往右查找:Note that the linker only looks further down the line when looking for symbols used by but not defined in the current lib.Linux 下…