【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、
【公众号】迅为电子
【粉丝群】258811263(加群获取驱动文档+例程)
第十三章 Linux连接档
本章内容对应视频讲解链接(在线观看):
Linux连接档概念 → https://www.bilibili.com/video/BV1M7411m7wT?p=13
Linux 下的连接档有两个种类。一个是类似于 windows 电脑的快捷方式,我们称为软链接,软链接也可以叫做符号链接。另一种是通过文件系统的 inode 连接来产生的,类似于 windows 电脑的复制,但是不产生新的文件,我们称为硬链接。硬链接也可以称作为实体链接。
13.1 索引节点
inode 也叫作索引节点,内核为每一个新创建的文件都会分配一个索引节点,就是 inode 。inode 是用来存放文件信息的,每个文件都会占用一个 inode ,并且这个 inode 号是唯一的,可以把inode 简单的理解为一个指针,它永远指向本文本的具体存储位置,文件的属性保存在 inode 里,系统是通过 inode 而不是文件名来定义每一个文件的。文件的内容都是 inode 来指定的而不是文件名,当系统要访问文件时,inode就会被复制到内存,从而实现文件的快速访问,使用 ls -i 命令则可以看到 inode号。
-i 参数为打印文件的 inode 号


我们也可以使用 ll -i ,是一样的。

13.2 硬链接
硬连接是一个新的链接到某个 inode号码的记录。这个链接指向 inode ,系统并不给他从新分配 inode 。也就是说会有多个文件对应同一个 inode ,如果两个文件的inode一样,那么这两个文件就是完全一样的。可以用 ln命令来建立硬链接。
格式: ln 源文件 目标文件
常用参数 -f ,就是说强制创建,无论目标文件是否存在都要创建链接。
举例:我们使用命令touch test1.c创建文件 test1.c,然后ln test1.c test2.c创建一个硬链接,最后用 ls -li 命令来查看下,如下图所示。

在例子中我们可以发现 test1.c 和 test2.c 他们的 inode 号码都是 17301827 。因为 inode 号一样,所有这个两个文件的权限和属性也是一模一样的,也是 test1.c和test2.c 是两个完全一样的文件。如下图所示。

连接数也由1 变成了2 ,这个代表的是有多少个档名链接到了这个 inode 号。如下图所示。

我们再创建一个硬连接。使用 ln test1.c test3.c -f 命令后,则会发现我们这个连接数从2变成了3,如下图所示。

13.3 硬链接的优缺点
优点:
第一是方便,虽然类似于windows的复制,但是通常并不占用实际空间。不管我们是修改 test1.c 或者是修改 test2.c 还是 test3.c ,只要修改一个,我们的文件就会被同时修改,因为他们的 inode 号都是相同的。
举例:
修改test3.c 的内容为下图所示:

test1.c和test2.c的内容也被修改成了nihao,如下图所示。
第二是安全,防止误删除。我们删除 test1.c 或者是 test2.c 或者 test3.c 任意一个,我们还是可以通过剩下的连接来访问文件,除非都删掉。我们可以利用这个特点来做文件的备份。
我们删掉 test1.c 使用 rm test1.c。但是 test2.c或者 test3.c还是可以访问到 “nihao”这个内容。输入以下命令:
cat test2.c
cat test3.c

缺点:
只能在同一个文件系统才可以创建硬连接(因为不同的文件系统管理方式不同),甚至有的文件系统没有索引号,它不是索引文件系统。哪怕他有索引号,两个文件系统的索引号含义不一定是相同的,即使它的索引号相同,我们连接几个文件,他有相同的 inode ,但是不同的文件系统中也有可能使用该 inode 的其他文件,这样就会发生冲突,所以说我们只能在同一个文件系统中才能创建硬连接。
第二,目录之间不能创建硬连接(太复杂,现在还不支持)。如果说硬连接到我们的目录,那么我们连接的数据需要连同被连接目录下所有数据都要创建硬连接,如果说我们将根目录下的 etc 用硬连接创建一个硬连接的目录,那么不光是我们的文件要被创建,这个文件下面所有的文件名都要创建一个硬连接,这样呢就会给工作环境造成一个很大的工作量,而且非常的复杂,所以现在还不支持。
13.4 软链接
这类似于 windows 上的快捷方式。可以用 ln 命令来建立软链接。
格式: ln -s 源文件 目标文件 (必须加上-s 参数,使用 ln 如果不加任何参数的话,那么就是Hard Link ,而且源文件要用绝对路径)
-s 为创建一个软连接。源文件必须使用绝对路径,不能使用相对路径,如果使用相对路径的话,我们后面想对文件进行一个移动或者复制,那么它绝对会出问题。
我们给 test3.c这个文件创建一个软连接,
ln -s /home/topeet/test/test3.c test1.c

上图中我们可以发现 test1.c 和 test3.c 的 inode 号是不一样的,所以这两个文件是完全独立的,总之软连接就是创立了一个新的文件,当访问这个链接文件的时候,系统就会发现他是一个链接文件,然后读取链接文件找到真正要访问的文件。
因为类似于 windows 上的快捷方式,我们删掉源文件 test3.c ,那么test1.c就不能打开了,如下图。
红色背景代表无效。

软连接虽然没有硬连接安全,但是限制少,所以使用范围还是很广泛的
延伸内容:
ubuntu系统中各个文件的颜色含义:
| 蓝色 | 文件夹, ls -l 或 ll 时可以看到权限部分的第1个字母是d |
| 红色 | 压缩文件 |
| 绿色 | 可执行文件 |
| 白色 | 文本文件 |
| 红色闪烁 | 错误的符号链接 |
| 淡蓝色 | 符号链接 |
| 黄色 | 设备文件 |
| 灰色 | 其他文件 |
相关文章:
【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第十三章 Linux连接档
i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...
鸿蒙语言基础类库:【@ohos.uri (URI字符串解析)】
URI字符串解析 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…...
JavaScript---new Map()用法
new Map 创建 Map 对象设置键值对获取值检查键是否存在键值对数量删除键值对清空所有键值对迭代 Map 在JavaScript中,Map 是一个构造函数,用于创建 Map 对象,它可以存储键值对集合。与普通的对象不同,Map 的键可以是任何类型的值&…...
【数据基础】— 基于Go1.19的站点模板爬虫的实现
目录 1. 定义目标站点 2. 使用Go的库 3. 发送HTTP请求 4. 解析HTML并提取数据 5. 存储数据 6. 并发处理 示例代码 基于Go 1.19的站点模板爬虫实现通常涉及几个关键步骤:定义目标站点、解析HTML页面、提取所需数据、存储数据以及可能的并发处理。下面我将详细…...
Angular进阶之九: JS code coverage是如何运作的
环境准备 需要用到的包 node 18.16.0# Javascript 代码编辑"babel/core": "^7.24.7","babel/preset-env": "^7.24.7","babel-loader": "^9.1.3",# 打包时使用的 module, 给代码中注入新的方法# http…...
el-table 鼠标移入更改悬停背景颜色
鼠标悬停时需要更改当前行背景颜色,一开始写的颜色会改变,但是一闪而过就没了 这是因为移入移出的动画效果导致的 .el-table__body {.el-table__row:hover {background-color: pink !important;}} 更改为后面的代码,就可以了 .el-table__…...
【《无主之地3》风格角色渲染在Unity URP下的实现_角色渲染(第四篇) 】
文章目录 概要描边问题外秒变分叉解决办法1:测试效果如下:外秒变分叉解决办法2:URP管线下PBR渲染源码关键词解释:完整shader代码如下:URP管线下二次元皮肤渲染源码URP管线下二次元头发渲染源码简要介绍文章的目的、主要内容和读者将获得的知识。 概要 提示:《无主之地3》…...
【linux服务器篇】-Redis-RDM远程连接redis
redis desktop manager 使用远程连接工具RDM连接redis 市面上比较常见的其中一款工具redis desktop manager 简单的说: Redis Desktop Manager 简单的来讲就是Redis可视化工具,可以让我们看到Redis中存储的内容。 redis desktop manager是一款功能强…...
【pytorch15】链式法则
x到u再到y,可以理解为x是输入,中间层hidden layer 是u,最后y是pred 对于一个简单的线性层可以展开得到y的表达式,但是对于实际的神经网络还要加上激活函数,此时展开就非常的复杂,不能够一次到位,…...
C#用链表和数组分别实现堆栈
1.链表 实现栈的四个基本功能 入栈 出栈 长度 栈顶值 public class 基础 : MonoBehaviour {public class MyStack{//定义每一个元素的数据结构 //下一个元素 和 该元素的值public class StackData{public StackData next;public object data;public StackData(StackData next,…...
【AI原理解析】—强化学习(RL)原理
目录 一、基本原理 二、基本框架与要素 三、学习过程 四、关键概念 五、算法实现 六、应用领域 七、总结 强化学习(Reinforcement Learning, RL) 一、基本原理 强化学习的基本原理是基于“试错学习”(trial-and-error learning&…...
java解析请求的字符串参数Content-Disposition: form-data;和拼接的键值对
项目场景: 获取到http请求的参数,已经被字符串接收了,需求是需要从字符串中解析出来。 一种情况是:Content-Disposition: form-data; name"userCode" 另一种是:key1value1&key2value2&key3value3…...
活动回顾|2024 MongoDB Developer Day圆满收官!
上周六,MongoDB专家与团队在深圳 与90位开发者度过了充实一日 至此,2024 MongoDB Developer Day 北上深三站之行全部圆满结束! 一文回顾本次活动全程与精彩影像! MongoDB Developer Day 专为开发者定制的技术盛宴 全天沉浸动手实…...
MySQL资源组的使用方法
MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,以便线程根据组可用的资源执行。组属性允许控制其资源,以启用或限制组中线程的资源消耗。DBA可以针对不同的工作负载适当地修改这些属性。 目前,CPU时间是一…...
python--实验7 函数(1)
知识点 函数的定义与调用 函数分类:内置函数和自定义函数。函数定义:使用def关键字定义函数,包括函数名、参数列表和函数体。注意: (1)即使该函数不需要接收任何参数,也必须保留一对空的圆括号…...
【力扣】数组中的第K个最大元素
一、题目描述 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,…...
WTM的项目中EFCore如何适配人大金仓数据库
一、WTM是什么 WalkingTec.Mvvm框架(简称WTM)最早开发与2013年,基于Asp.net MVC3 和 最早的Entity Framework, 当初主要是为了解决公司内部开发效率低,代码风格不统一的问题。2017年9月,将代码移植到了.Net Core上&…...
互联网3.0时代的变革者:华贝甄选大模型创新之道
在当今竞争激烈的商业世界中,华贝甄选犹如一颗璀璨的明星,闪耀着独特的光芒。 华贝甄选始终将技术创新与研发视为发展的核心驱动力。拥有先进的研发团队和一流设施,积极探索人工智能、大数据、区块链等前沿技术,为用户提供高性能…...
Tomcat的安全配置
1、生产环境优化 2、部分漏洞修复 转载自风险评估:Tomcat的安全配置,Tomcat安全基线检查加固-CSDN博客...
[笔记] 卷积 - 01 变速箱需要放置多少个加速度传感器?
1.讨论范围 本帖主要对卷积运算的过程和物理意义进行基本的展开,不涉及具体的验算过程。 最终所要达成的目标是,能够自然地判断某种物理现象或者某个测量目标是否与卷积运算有关,以及如何进行测量,搜集数据,调用三方…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
