【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第十三章 Linux连接档概念

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等


 

第十三章 Linux连接档概念

本章内容对应视频讲解链接(在线观看):https://www.bilibili.com/video/BV1M7411m7wT?p=15

13.1 Linux下的连接档种类

Linux 下的连接档有两个种类。一个是类似于 win 电脑的快捷方式,我们称为软连接,软连接也可以叫做符号链接。另一种是通过文件系统的 inode 连接来产生的,类似于 win 电脑的复制,但是不产生新的文件,我们称为硬链接。硬链接也可以称作为实体连接。

13.2 什么是 inode

inode 也叫做索引节点,内核为每一个新创建的文件都会分配一个索引节点,就是 inode 。

inode 是用来存放文件信息的,每个文件都会占用一个 inode ,并且这个 inode 号是唯一的,可以把inode 简单的理解为一个指针,它永远指向本文本的具体存储位置,文件的属性保存在 inode 里,系统是通过 inode 而不是文件名来定义每一个文件的。文件的内容都是 inode 来指定的而不是文件名,当系统要访问文件时,inode就会被复制到内存,从而实现文件的快速访问,使用 ls -i 命令则可以看到 inode号。

-i 参数为打印文件的 inode 号

 

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

 

13.3 什么是硬连接

硬连接是一个新的链接到某个 inode号码的记录。这个链接指向 inode ,系统并不给他从新分配 inode 。也就是说会有多个文件对应同一个 inode ,如果两个文件的inode一样,那么这两个文件就是完全一样的。可以用 ln命令来建立硬链接。

格式: ln 源文件 目标文件

常用参数 -f ,就是说强制创建,无论目标文件是否存在都要创建连接。

举例:我们创建文件 test1.c,touch test1.c然后创建一个硬链接,ln test1.c test2.c然后用 ls -li 命令来查看下,如下图所示。

 

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

 

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

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

 

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

13.4 使用硬连接的优缺点是什么?

优点:

第一是方便,虽然类似于win的复制,但是通常并不占用实际空间。而且不管我们是修改 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.5 什么是软连接

这类似于 win 上的快捷方式。可以用 ln 命令来建立软链接。

格式: ln -s 源文件 目标文件 (必须加上-s 参数,使用 ln 如果不加任何参数的话,那么就是Hard Link ,而且源文件要用绝对路径)

-s 为创建一个软连接。源文件必须使用绝对路径,不能使用相对路径,如果使用相对路径的话,我们后面想对文件进行一个移动或者复制,那么它绝对会出问题。

我们给 test3.c这个文件创建一个软连接,

ln -s /home/topeet/test/test3.c test1.c

 

上图中我们可以发现 test1.c 和 test3.c 的 inode 号是不一样的,所以这两个文件是完全独立的,总之软连接就是创立了一个新的文件,当访问这个链接文件的时候,系统就会发现他是一个链接文件,然后读取链接文件找到真正要访问的文件。

因为类似于 win 上的快捷方式,我们删掉源文件 test3.c ,那么test1.c就不能打开了,如下图。

红色背景代表无效。

 

软连接虽然没有硬连接安全,但是限制少,所以使用范围还是很广泛的

延伸内容:

ubuntu系统中各个文件的颜色含义:

蓝色:文件夹, ls -l 或 ll 时可以看到权限部分的第1个字母是d

红色:压缩文件

绿色:可执行文件

白色:文本文件

红色闪烁:错误的符号链接

淡蓝色:符号链接

黄色:设备文件

灰色:其他文件

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值