`

Linux 链接概念

阅读更多

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

[oracle@Linux]$ echo "I am f1 file" >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

 

from: http://kb.cnblogs.com/a/1433052/

分享到:
评论

相关推荐

    linux文件系统概念解释

    ### Linux文件系统概念详解 #### 文件的逻辑结构与类型 在深入探讨Linux文件系统之前,首先需要理解文件的逻辑结构。文件的逻辑结构是用户在操作系统层面所能看到和操作的结构,它可以从用户的角度被分为两大类:*...

    linux软链接 硬链接区别

    Linux 链接概念是 Linux 操作系统中的一种文件系统机制,允许用户创建多个文件名指向同一个文件或目录。Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。 硬链接(Hard ...

    Linux 挂载概念 理解

    Linux 挂载概念 理解 Linux 挂载概念是 Linux 操作系统中...挂载是 Linux 中的一种重要概念,它允许用户将不同的存储设备和文件系统连接到一个统一的目录树中,使得用户可以方便地访问和管理这些存储设备和文件系统。

    Linux下链接脚本基础

    了解链接脚本的基本概念和格式是进行嵌入式Linux系统开发的基础。此外,熟悉这些概念可以帮助开发者更好地优化程序的内存布局,提高程序性能,尤其是在受限的嵌入式设备上。通过实践和编写自己的链接脚本,开发者...

    Linux文件系统概念解释

    理解这些基本的文件系统概念对于有效管理和使用Linux系统至关重要。通过熟练掌握这些知识,用户能够更好地管理文件、目录、设备,以及进程间的通信,从而提升工作效率。在实际操作中,熟练运用各种命令和工具,如`...

    linux下QT编写的连接wifi程序

    在Linux环境下,使用QT框架编写连接Wi-Fi的程序是一项实用的技术任务。QT是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动和嵌入式系统。结合Linux的网络管理工具,如wpa_supplicant或iwconfig...

    linux链接脚本详解

    ### Linux链接脚本详解 #### 1. 什么是链接脚本? 链接脚本在Linux环境中扮演着关键角色,尤其在构建内核时更是不可或缺的一部分。简单来说,链接脚本文档是一种特殊的文本文件,用于指导链接器如何组合多个目标...

    Linux软连接和硬链接

    1.Linux链接概念  Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。  【硬连接】  硬连接指通过索引节点来进行连接。在Linux的文件...

    linux多路径连接iScsi存储-重启自动连接.docx

    本文将介绍 Linux 中 iSCSI Initiator 的配置和使用方法,包括 iSCSI Initiator 的基本概念、配置文件、守护进程、自动连接等方面。 一、iSCSI Initiator 概念 iSCSI Initiator 是一种软件,可以让主机通过 IP ...

    Linux编程--Linux内核概念系统结构

    Linux内核概念系统结构 摘要 323 前言 324 第1章 系统结构 325 1.1 系统概述 325 1.2 内核的目标 325 1.3 内核结构的概述 325 1.4 支持多个开发人员 327 1.5 系统数据结构 328 1.5.1 任务列表 328 1.5.2 内存映射 ...

    Embedded Linux 技术与概念解析

    在整体架构上,Embedded Linux平台还包括共享链接库,它们允许多个程序共享代码,减少了内存占用和磁盘空间。此外,可能还包括设备驱动程序,以支持硬件的正常工作,以及各种用户界面和网络服务,以提供友好的交互...

    Linux 线程池+连接池

    在IT领域,线程池和连接池是两个关键的概念,特别是在服务器端的系统设计和优化中。它们在提高系统性能、资源管理和响应速度方面发挥着重要作用。本文将深入探讨Linux环境下的线程池和连接池,并结合C语言的epoll...

    ssh链接linux工具

    本文将深入探讨SSH链接Linux工具的使用,以及如何通过可视化方式操作Linux下的文档目录。 1. SSH基础概念: SSH提供了加密的网络通信,确保数据在传输过程中不被窃取或篡改。它支持公钥认证和密码认证等多种安全...

    SecureCRT等连接Linux出现乱码

    在使用SecureCRT等终端模拟器连接到Linux服务器时,可能会遇到字符编码问题,导致显示乱码。这种情况通常是由于字符集不匹配或者配置不正确引起的。本文将深入探讨这个问题,并提供解决方案。 首先,我们要理解字符...

    Linux软连接和硬链接-实际操作一遍你就会懂

    通过实际操作,不仅能够加深对硬链接和软链接概念的理解,而且还能够了解它们在实际工作中的应用,如何利用它们来提高工作效率,确保数据安全。例如,对于防止误删除重要文件的情况,使用硬链接是一个很好的策略。而...

    linux期末考试参考题库_linux期末_linux_Linux题库_题库Linux_

    1. **Linux基础概念**:理解什么是Linux,它与Unix的关系,以及它的开放源码特性。学习主要的Linux发行版,如Ubuntu、CentOS、Debian等,并了解它们的特点和用途。 2. **Linux目录结构**:掌握Linux的FHS...

    深入理解 Linux 链接:符号链接与硬链接的创建与管理

    本文通过深入分析链接的概念、特点和使用场景,并结合实际的 Linux 命令示例,为读者提供了一个全面的链接管理指南。希望本文能够帮助读者更好地利用 Linux 链接特性,优化文件系统管理和应用程序配置。

    Linux 初级学习的基本概念和资料

    了解文件的打开、读写、关闭操作,以及文件权限、符号链接、硬链接等概念,可以帮助我们更好地管理和操作文件系统。同时,掌握文件描述符、标准输入/输出和重定向等,能够灵活地在命令行环境下工作。 最后,我们...

    Linux或Windows下判断socket连接状态

    无论是Linux还是Windows操作系统,开发者都需要了解如何判断一个Socket连接的状态,以便于处理异常情况,保证程序的稳定性和可靠性。本文将深入探讨在Linux和Windows环境下,如何通过编程来检测Socket连接是否已断开...

Global site tag (gtag.js) - Google Analytics