Linux系统:那些常见的硬链接和软链接!

智数清韵
• 阅读 148

在Linux系统中,有些常见的硬连接和软连接,你知道吗?今天就带大家来认识一下!先从Linux系统中的文件系统说起。

1. 在Linux中一切皆为文件

在Linux中有且只有一个根目录,它就是 / (斜杠),它的子目录有如下这些:

bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

下面我们来解释一些比较重要目录的各自意义:

bin:表示二进制文件,包含了会被所有用户使用的可执行程序

因bin目录下的子目录过多,这里只截取一部分展示)

[hduser@localhost bin]$ ls [

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

boot:表示启动文件的意思,包含了与Linux系统启动相关的文件

Linux系统:那些常见的硬链接和软链接!

dev:表示设备目录(包含外设),它的每一个子目录都对应一个外设

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

etc:表示配置文件,包含系统的配置文件

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

home:表示用户的私人目录

[hduser@localhost home]$ ls hduser yzp

lib: 表示库文件目录 ,包含了所有对系统有用的库文件

Linux系统:那些常见的硬链接和软链接!

media:表示移动外设(如:USB、光盘等)目录,我们可以通过media的子目录来访问这些设备

mnt:此目录用于临时加载一些设备

opt:用于安装第三方软件和插件的目录

root:表示超级用户的家目录

proc:存放的是虚拟文件系统的目录

sbin:包含系统级的可执行程序目录

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

Linux系统:那些常见的硬链接和软链接!

srv:此目录包含一些网络服务启动后所需的数据

tmp:普通用户和程序存放临时文件的地方

Linux系统:那些常见的硬链接和软链接!

usr:是存储Unix操作系统软件资源的目录

[hduser@localhost usr]$ ls bin etc games include lib lib64 libexec local sbin share src tmp

我们用一张图来总结一下根目录下各文件的含义

Linux系统:那些常见的硬链接和软链接!

二、硬链接和软链接:

1. 链接类型

类别:硬链接和软链接

2. 首先我们先来了解一下什么是inode?

在linux系统中,文件的文件内容会被分配到一个标志号码,这个标志号码就是inode,它是文件的索引节点

linux文件系统中有一块区域叫做inode table,它就是保存inode的地方

inode保存着文件的元信息,其内容包括:文件类型、文件权限、文件物理地址、文件长度、文件连接计数、文件存取时间、索引节点编号 、文件状态、访问计数、链接指针

Linux系统中,每个文件名都绑定到它的文件内容并用文件内容的inode标识,文件名并不是文件的唯一标识,Inode才是文件的唯一标识

3. 硬链接原理

硬链接:使有链接关系的两个文件共享同样的文件内容,拥有同样的inode, 缺陷是只能创建指向文件的硬链接,不能指向目录

Linux系统:那些常见的硬链接和软链接!

4. 软链接原理

软链接:有软链接关系的两个文件,它们的inode是不同的,它可以指向目录,软链接才真正像我们在windows下的快捷方式

Linux系统:那些常见的硬链接和软链接!

三、ln命令

1. 作用:用于在文件之间创建链接,ln是link("链接")的缩写

2. 创建硬链接

ln a.txt b.txt

Linux系统:那些常见的硬链接和软链接!

注:数字2代表有相同inode号的文件数

查看文件的inode

ls -i (i参数可以显示文件的inode)

Linux系统:那些常见的硬链接和软链接!

我们可以看到 a.txt和b.txt 文件的inode是一样的,说明它们指向的是同一个文件内容

我们删除a.txt文件,对b.txt文件来说,看会发生什么情况

ls rm a.txt ls cat b.txt ls -i

Linux系统:那些常见的硬链接和软链接!

我们用rm删除了a.txt文件, 可以看到对于b.txt文件没有任何影响,它的inode也没有改变

说明了对于硬链接来说,删除任意一方的文件,它们共同指向的文件内容并不会从硬盘上删除,只有同时把他们都删除掉,它们共同指向的文件内容才会消失,也就是那个inode才会被删除

3. 创建软链接

ln -s file1.txt file2.txt

Linux系统:那些常见的硬链接和软链接!

file2.txt -> file1.txt 表示文件file2指向file1, lrwxrwxrwx中的 l 表示file2.txt文件是一个软链接文件

查看文件的inode

ls -i

Linux系统:那些常见的硬链接和软链接!

我们可以看出文件file1和文件file2的inode是不同的

这是因为文件file2是指向文件file1的,它们并没有指向同一块文件内容,所以它们的inode号不相同

file2其实只是file1的一个快捷方式,它指向的是file1,所以显示的是file1的内容

我们删除file1.txt对于file2.txt会有什么影响?

如果我们删除了file2,那么对于file1来说不会有任何影响,如果删除file1,那么file2就会变成"死链接",

这是因为file2指向的文件没有了

rm file1.txt ls -lh

Linux系统:那些常见的硬链接和软链接!

点赞
收藏
评论区
推荐文章
小尉迟 小尉迟
2年前
PD虚拟机镜像ARM版CentOS Linux系统(苹果M1专用)
Linux系统受程序员钟爱,目前国内常见版本有Ubuntu和CentOS等,CentOS是较为稳定的Linux系统。如何在苹果电脑上安装Linux系统呢,小编为大家准备了ARM版CentOSLinux系统镜像文件资源,一起来看看吧!ARM版CentOSLi
说透IO多路复用模型
在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socketclient端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。
Stella981 Stella981
3年前
LoadRunner如何监控Linux下的系统资源
关于LoadRunner监控Linux系统资源,大致分为以下步骤:1、在监控Linux之前我想阐述的观点是,Liunx系统机制与windows大致相同,要监控并得到他的相关参数必须需要得到它的同意,这就是操作系统,所以你必须有足够的权限和方法才能获得,关于Linux在LR中也相关添加区域,与windows享有同等的地位。在windows中需要开启许多许多
Stella981 Stella981
3年前
Linux系统文件管理基础
Linux系统文件管理基础一、Linux系统文件系统1.1Linux文件系统结构!img(http://qjz2nkh4a.hnbkt.clouddn.com/20201201205143.png)在Linux系统中,目录被组织成一个:单根倒置树结构,文件系统从根目录开始,用/来表示。文件
Stella981 Stella981
3年前
Linux中实体链接与符号链接详解
前言在Linux底下的连结档有两种,一种是类似Windows的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录),这种是软链接;另一种则是透过文件系统的inode连结来产生新档名,而不是产生新文件!这种称为硬链接(hardlink)。这两种玩意儿是完全不一样的东西呢!现在就分别来谈谈。1.实体链接在目录下创建一
Stella981 Stella981
3年前
Linux系统的基本操作
_20200727_Linux目录结构基本介绍Linux的文件系统是采用层级式的树状结构,在此结构中的最上层是/根目录tip1:在Linux世界里,一切皆是文件示例/bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
Wesley13 Wesley13
3年前
2.21 软链接文件
软链接介绍链接文件分为硬链接文件(hardlink)和软链接文件(symboliclink),两种链接的本质区别在于inode。软链接文件:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。做软链接尽量使用绝对路径。例子root@hf0
Stella981 Stella981
3年前
Linux文本处理工具
Linux文本处理工具Linux中熟练的使用文本处理工具非常的重要,因为Linux在设计的时候是采用一切皆文件的哲学的,甚至连计算机中的配置也都使用伪文件系统来表示,要查询里面的内容就是对文件进行操作,所以学会使用文件处理工具事半功倍。而在一切皆对象的Windows中,因为对象封装了所有的操作,包括显示标
Stella981 Stella981
3年前
Linux环境下编程有哪些优势?
★Linux系统它是一种开源的,并且有很多可用的软件支持,再者它大多数都是免费使用的;例如我们的手机的安卓系统底层就是基于Linux系统开发的;Linux最广泛的应用是在服务区和嵌入式系统中,一些知名网站和平台的服务器用的必然是Linux操作系统。Linux在如今互联网领域具有独特优势,例如人脸识别、扫码支付等等中。!(https://static
Stella981 Stella981
3年前
Linux 网络包接收过程的监控与调优
Linux内核对网络包的接收过程大致可以分为接收到RingBuffer、硬中断处理、ksoftirqd软中断处理几个过程。其中在ksoftirqd软中断处理中,把数据包从RingBuffer中摘下来,送到协议栈的处理,再之后送到用户进程socket的接收队列中。!Linux教程(https://oscimg.oschina.net/oscnet/up
Stella981 Stella981
3年前
Linux文件删除原理及案例分析
谨记:大多数服务在运行时,是不能删除对应的服务正在写入的日志文件,会带来意料之外的结果!!!    Linux是通过link的数量来控制文件删除的,link包括被调用的数量和硬链接数量。真正的删除一个文件,只有在文件未被进程调用的情况下,删除该文件的所有硬链接数即可。    如果在进程调用时,通