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 |
红色 | 压缩文件 |
绿色 | 可执行文件 |
白色 | 文本文件 |
红色闪烁 | 错误的符号链接 |
淡蓝色 | 符号链接 |
黄色 | 设备文件 |
灰色 | 其他文件 |