当前位置: 首页 > news >正文

【北京迅为】《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的表达式,但是对于实际的神经网络还要加上激活函数,此时展开就非常的复杂,不能够一次到位&#xff0c…...

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.讨论范围 本帖主要对卷积运算的过程和物理意义进行基本的展开,不涉及具体的验算过程。 最终所要达成的目标是,能够自然地判断某种物理现象或者某个测量目标是否与卷积运算有关,以及如何进行测量,搜集数据,调用三方…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...