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

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...