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)(硬链接)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Prometheus 的超算弹性计算场景下主机监控最佳实践

作者:左知 超算场景的业务特点 主机监控,或许是监控/可观测领域最传统和普遍的需求。在超算训练,AI 大规模训练的业务场景下,主机监控又有哪些痛点和难点呢?根据我们针对多个大规模超算客户的需求整理,超…

Python案例题目,入门小白题

1.抓取链家前十页的数据 链家网址:长沙房产网_长沙房地产_长沙房产门户(长沙链家网) 1.1.计算均价和总价 import time ​ from selenium import webdriver from selenium.webdriver.common.by import By ​ driver webdriver.Chrome() driver.get("https://c…

linux系统内存持续飙高的排查方法

目录 前言: 1、查看系统内存的占用情况 2、找出占用内存高的进程 3、解决方法 4、补充:如果物理内存使用完了,会发生的情况 前言: 如果一台服务器内存使用率持续处于一个高峰值,服务器可能会出现响应慢问题。例如s…

使用@Autowired + Map 实现策略模式

使用Autowired Map 实现策略模式 创建接口 public interface UserService {String getName(); }创建多个类实现上面的接口 实现一 import com.boot.service.UserService; import org.springframework.stereotype.Service;Service("zhangsan") public class Zhangsan…

代码随想录算法训练营第十六天|LeetCode104 二叉树的最大深度、LeetCode111 二叉树的最小深度、LeetCode222完全二叉树的节点个数

题1: 指路:LeetCode104 二叉树的最大深度 思路与代码: 1.递归 求左右子树的最大深度后加1(根到子树也有1个深度单位)。代码如下: class Solution { public:int maxDepth(TreeNode* root) {int ans 0;if (root NULL) return…

当他们在说业务的时候,到底在说什么

业务就是通过提供产品和服务给客户,以获取某种价值,形成业务闭环,并能自负盈亏。 文章会以生动形象的比喻来介绍业务到底是什么。 什么是业务? 业务,就像一场精彩的舞台剧,每个角色都有自己的任务和目标…

electron学习记录

1.下载electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下载实例模板 2.安装依赖 npm源改成中国镜像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 来安装 npm换官方源 npm config set registry https:…

QT--TCP网络通讯工具编写记录

QT–TCP网络通讯工具编写记录 文章目录 QT--TCP网络通讯工具编写记录前言演示如下:一、服务端项目文件:【1.1】server_tcp.h 服务端声明文件【1.2】thread_1.h 线程处理声明文件【1.3】main.cpp 执行源文件【1.4】server_tcp.cpp 服务端逻辑实现源文件【…

cuda 内核启动

C 使用 __global__ 声明说明符定义内核&#xff0c;并使用新的 <<<...>>> 执行配置语法指定内核调用的 CUDA 线程数&#xff08;请参阅 C 语言扩展&#xff09;。 每个执行内核的线程都有一个唯一的线程 ID&#xff0c;可以通过内置变量在内核中访问。 示例…

【最全的excel转json!!!】使用Python脚本提取excel文本中的数据到json中

比如说&#xff1a;我有一个1.xlsx的文件需要转成对应的json格式。 1&#xff09; excel 文件的大概内容&#xff1a; 2&#xff09;保存的方式类似于以下这种情况&#xff1a; 用Python脚本来实现 import pandas as pd import json# 读取Excel文件 excel_path r"D:…

基础知识篇:大语言模型核心原理解析

1️⃣人工智能基础概念全景图 &#x1f4a1; &#x1f9e0;人工智能与机器学习 人工智能&#xff08;AI&#xff09;是计算机科学的一个分支&#xff0c;旨在模拟人类的智能来解决问题。而机器学习&#xff08;ML&#xff09;是AI的一个子集&#xff0c;它的魅力在于不需要显…

【MySQL精通之路】MySQL8.0升级过程升级了什么

目录 1.升级内容 1.1 mysql系统库 1.2.其他库 2.步骤 2.1 步骤1&#xff1a;数据字典库升级。 2.2 步骤2&#xff1a;服务器升级。 3.mysql_upgrade 3.1 执行正常升级&#xff08;根据需要执行步骤1和2&#xff09;&#xff1a; 3.2 必要时仅执行步骤1&#xff1a; 3…

【MySQL精通之路】InnoDB(6)-磁盘结构(6)-Undolog

1.介绍 Undolog是与单个读写事务相关联的Undolog记录的集合。 Undolog包含有关如何撤消事务对聚集索引记录最新更改的信息。如果另一个事务需要将查看一致性读的一部分原始数据&#xff0c;则会从Undolog记录中检索未修改的数据。 2.结构 Undolog记录存在于Undolog段中 而Un…

LLMPerf-为LLM提供可重现的性能指标

LLMPerf-为LLM推理提供可复现的性能指标 翻译自文章&#xff1a;Reproducible Performance Metrics for LLM inference 结合之前的LLMPerf测试大模型API性能的文章进行查看&#xff0c;效果更佳。 1. 摘要 我们见过许多关于LLM性能的声明&#xff1b;然而&#xff0c;这些声明往…

Android面试题之Kotlin泛型和reified关键字

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 //泛型 class MagicBox<T>(item:T){var available falseprivate var subject:T itemfun fetch() : T? {return subject.takeIf { avai…

Ubuntu彻底卸载Nginx

停止Nginx服务 sudo systemctl stop nginx卸载Nginx软件包 sudo apt purge nginx nginx-common nginx-core清除配置文件和依赖项 清除Nginx的配置文件 sudo rm -rf /etc/nginx清除Nginx安装的依赖项 sudo apt autoremove清除相关文件和目录 删除Nginx的日志文件 sudo rm…

配置旁挂二层组网直接转发示例(命令行)

业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组网方式&#xff1a;旁挂二层组网。DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。汇聚交换机SwitchB作…

深度学习基础之《TensorFlow框架(18)—卷积神经网络(2)》

一、卷积层 1、卷积层&#xff08;Convolutional Layer&#xff09;介绍 卷积神经网络中每层卷积层由若干卷积单元&#xff08;卷积核&#xff09;组成&#xff0c;每个卷积单元的参数都是通过反向传播算法最佳化得到的 卷积运算的目的是特征提取&#xff0c;第一层卷积层可能…

Gradle和Maven项目解决Spring Boot Configuration Annotation Processor not configured警告

问题描述 写了一个配置类,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直报警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解处理器 解决过程 出现这个问题后,百度查了解决方式 1.maven项目 maven项目是…

学习前端第四十四天(浏览器事件简介)

一、事件处理程序 对事件作出响应&#xff0c;可以分配一个 处理程序 &#xff0c; 一个在事件发生时运行的函数 1、HTML特性绑定事件处理函数 <button id"btn1" οnclick"fn();console.log(xc)">保存1</button> 2、DOM属性绑定事件处理函数…