我与Linux的爱恋:基础IO 软硬连接+动静态库


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

🔥个人主页guoguoqiang. 🔥专栏Linux的学习

Alt

文章目录

  • 一、软硬链接
    • 使用
    • 对应的特征 内容 以及作用
  • 二、动态库
    • 静态库的制作打包与使用
    • 生成静态库
    • 库搜索路径
    • 动态库的打包以及使用
    • 生成动态库

一、软硬链接

使用

软连接
在这里插入图片描述
在这里插入图片描述
硬链接​
在这里插入图片描述
通过观察我们可以发现:
1.ll -i 后,软连接形成的文件有指向,而且inode与原文件的inode编号不同
2.ll -i 后,硬链接形成的文件与原文件对应的inode编号相同
3.软链接的硬链接数为1,硬链接的硬连接数为2

对应的特征 内容 以及作用

1.软连接是一个独立的文件因为有独立的inode编号
软链接文件中存储的主要内容是它所指向目标文件或目录的路径。这个路径可以是绝对路径,也可以是相对路径。我们可以通过cat软链接,就能打印文件中的内容,软连接也就类似于windows中的快捷键,比如你要执行的程序在一个很深的目录下,你可以在较浅的目录中建立软链接。
在这里插入图片描述
如果我们把软链接删除会影响原本的文件么?
很明显并不会,因为软链接的文件与原本的文件,是两个独立的文件。例如在windows中,你删除了一个快捷方式,并不会影响原本的应用。而如果你删除了应用,软链接也会消失。
软链接的作用–快速使用文件
我们要在外层建立软连接,目标在code/lesson7内部,测试发现通过cat外层的软连接也可以打印文件中的内容。
在这里插入图片描述
在系统中 ll /usr/lib64有很多库,包括动态库静态库等,我们就可以发现这里有很多软连接
在这里插入图片描述

1.硬链接不是一个独立的文件,因为它没有独立的inode编号,它用的是目标文件的inode
硬链接(Hard Link)是一种特殊的文件系统特性,它允许用户建立多个指向同一inode的文件名。硬链接使得一个文件可以有多个名称,每个文件名称都指向文件系统的同一数据块集合(类似于C++中的引用)
硬连接的创建和删除:

创建硬连接:使用ln命令可以创建硬连接,例如ln 原始文件 硬连接文件。

删除硬连接:要删除硬连接,需要删除原始文件或所有指向同一inode的硬连接。例如,使用rm 硬连接文件可以删除硬连接,但如果原始文件仍然存在,硬连接文件会重新创建。
硬连接的特点:
硬链接具有以下特点:

  1. 共享 inode
    硬链接与源文件共享相同的 inode。这意味着它们在文件系统中实际上是同一个文件的不同名称,因为 inode 是文件在文件系统中的唯一标识,存储了文件的元数据信息,如文件类型、权限、时间戳、文件大小等。例如,对一个名为original.txt的文件创建硬链接hard_link.txt后,这两个文件名指向的是同一个 inode,它们的文件属性完全相同。
  2. 文件内容一致性
    由于共享 inode,对硬链接文件或源文件中的任何一个进行内容修改,都会反映在另一个文件上。因为它们在磁盘上指向的是完全相同的数据块。比如,在original.txt中写入新的内容,当通过hard_link.txt读取文件时,会看到相同的新内容。
  3. 权限同步
    硬链接的权限与源文件的权限始终保持一致,因为它们的权限信息都存储在共享的 inode 中。任何对源文件权限的修改会自动应用到硬链接上,反之亦然。例如,如果通过chmod命令修改original.txt的权限为只读,hard_link.txt的权限也会相应地变为只读。
  4. 不占用额外磁盘空间(除目录项)
    硬链接本身不占用额外的磁盘空间用于存储文件内容,因为它只是在目录中创建了一个新的目录项,指向与源文件相同的 inode。但是,每个硬链接都会在其所在的目录中有一个目录项,这个目录项会占用一定的磁盘空间来存储文件名和 inode 指针等信息。
  5. 链接计数
    文件系统通过 inode 中的链接计数来记录硬链接的数量。每创建一个硬链接,链接计数就会增加 1。当删除一个硬链接时,链接计数减 1。只有当链接计数为 0 时,即所有指向该 inode 的硬链接都被删除,并且没有进程打开该文件时,文件系统才会真正删除文件内容和 inode,释放磁盘空间。例如,如果original.txt有两个硬链接,其链接计数为 3(包括文件本身),删除其中一个硬链接后,链接计数变为 2。
  6. 局限性
    硬链接不能跨越文件系统。因为不同的文件系统有不同的 inode 编号和管理机制,所以不能在一个文件系统中的文件上创建指向另一个文件系统中文件的硬链接。同时,硬链接只能用于文件,不能用于目录(在大多数常见的文件系统中),这是为了避免目录树结构出现复杂的循环引用和管理上的混乱。
    硬链接的作用
    硬链接具有以下重要用途:
  7. 文件备份与数据冗余
    数据保护:硬链接可作为一种简单的文件备份方式。由于硬链接与源文件共享数据块,在同一文件系统内对重要文件创建硬链接,相当于创建了一份额外的文件副本。例如,对于系统配置文件,创建硬链接后,即使源文件因某些原因损坏或被误删除,通过硬链接仍可访问和恢复文件内容。
    数据冗余:在一些对数据可靠性要求较高的场景中,如数据库文件存储(如果数据库使用文件系统存储部分数据),使用硬链接可以增加数据的冗余度,减少因单一文件丢失导致的数据丢失风险。
  8. 文件共享与协作
    多用户共享:在多用户环境下,硬链接可用于共享文件。不同用户可以通过各自目录下的硬链接访问相同的文件内容,而无需复制文件,从而节省磁盘空间。例如,在一个团队项目中,所有成员都需要访问项目的核心文档,通过在每个成员的工作目录下创建指向核心文档的硬链接,成员们可以方便地对文档进行查看和修改(根据文件权限)。
    程序间共享数据:不同的程序如果需要共享数据文件,硬链接可以实现这一目的。例如,一个数据分析程序和一个数据可视化程序都需要处理相同的数据集文件,通过创建硬链接,两个程序可以独立地以自己的方式访问和处理该文件,而无需重复存储数据。
  9. 文件版本管理(简易形式)
    版本记录:在一定程度上可用于简单的文件版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8954.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CCF ChinaOSC |「开源科学计算与系统建模openSCS专题分论坛」11月9日与您相约深圳

2024年11月9日至10日,以“湾区聚力 开源启智”为主题的2024年中国计算机学会中国开源大会(CCF ChinaOSC)将在深圳召开。大会将汇聚国内外学术界、顶尖科技企业、科研机构及开源社区的精英力量,共同探索人工智能技术和人类智慧的无…

stm8开发笔记--STVD开发软件的安装

文章目录 1 开发软件安装1.1 安装软件1.2 编译器下载安装1.2.1 下载编译器1.2.2 安装1.2.3 添加密钥 1.3 编译器地址配置 2 编程开发2.1 下载软件开发包2.2 解压,打开工程2.3 选择对应芯片2.4 点击重新编译,不要有错误2.5 如果提示你,需要加载…

RNN天气预测

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 与上篇一样,依然是二维数据结构。这里通过构建基础的网络块来做天气类别的预测,网络如下: 预测是否下雨# 1.搭建神经网络 model Sequential() # 添加第一密集…

Elasticsearch如果集群出现节点故障,我应该如何快速定位问题?

当 Elasticsearch (ES) 集群发生故障时,快速定位问题源头非常重要。Elasticsearch 是一个分布式系统,故障可能由多种原因引起,涉及到硬件、配置、网络、集群本身的健康状况等多个层面。以下是一些定位问题的步骤和工具: 检查集群…

科研绘图系列:R语言热图和点图(heatmap dotplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包准备画图主题数据链接导入数据热图1热图2其他图1其他图2系统信息介绍 热图(Heatmap)是一种数据可视化技术,用于通过颜色的变化来展示数据矩阵中的数值大小。它通常由行和…

【Leecode】Leecode刷题之路第44天之通配符匹配

题目出处 44-通配符匹配-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 44-通配符匹配-官方解法 前言 本题与10. 正则表达式匹配非常类似,但相比较而言,本题稍…

智象未来(HiDream.ai):从科技创新启程,绘制智能未来新篇章

在人工智能领域飞速演进的当下,智象未来(HiDream.ai)作为全球领先的多模态生成式人工智能技术供应商,正以其独树一帜的视觉多模态大模型及创新应用,推动行业趋势的前进。智象未来(HiDream.ai)自…

用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。 快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档 声明:文章代码部分 由 ai 生成 创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码 python -m http.server 8000 打开服务器 设置主…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)

介绍 [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用 github地址:https://github.com/dotnetcore/CAP官网地址: https://cap.dotnetcore.xyz/官网文档:https://cap.dotnetcore.xyz/userguide/zh/cap/id…

【Syncfusion系列】Diagram 杂谈第一篇

前言 我认为 Diagram 是 Syncfusion 中首屈一指的优秀控件!最近在写一个工作流引擎,前端界面就用的是Diagram ,接下来就来看一看。 Diagram的事件 查看 SfDiagram的属性,如果想实现什么事件,就看这些Command结尾的…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑 准备:连接至服务器(如ssh)创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

[DB] Project-1-MySQL

下载并安装了MySQL-8.0.40 root; 密码为6位 MySQL安装教程(详细版)_mysql安装教程8.0.36-CSDN博客 解决:管理员身份运行cmd出现mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,…

【JavaEE进阶】导读

本节⽬标 了解什么是JavaEE 在JavaEE中, 我们学习什么, 如何学, 难点是什么 一、Java EE 发展历程 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习…

.NET 黑名单上传 突破WAF防护的SoapShell (免杀版)

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

多线程和线程同步复习

多线程和线程同步复习 进程线程区别创建线程线程退出线程回收全局写法传参写法 线程分离线程同步同步方式 互斥锁互斥锁进行线程同步 死锁读写锁api细说读写锁进行线程同步 条件变量生产者消费者案例问题解答加强版生产者消费者 总结信号量信号量实现生产者消费者同步-->一个…

MySQL_第13章_视图

1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图? 视图一方面可以使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。 2.2 视图的理解 视图是一种虚拟表,本身是不具有数据的,占用很少的内存…

Python数据分析-Netflix数据分析和可视化

一、研究背景 在当今时代,流媒体技术迅猛发展,如风暴般席卷全球娱乐产业,重塑了大众的娱乐消费模式。Netflix 在这一潮流中一马当先,成为全球首屈一指的在线流媒体平台。自 2007 年开启流媒体服务后,Netflix 就马不停…

数据集市是什么?有什么优势?

一、数据集市是什么? 1、数据集市的产生背景: 因为数据仓库的工作范围和成本比较巨大,技术部门必须对所有的以全企业的眼光对待任何一次决策分析,这样就变成了成本高、耗时高的大项目,而且这种集中式的数据处理方式往往…

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

代码地址 https://github.com/junjie18/CMT 1. 引言 在本文中,我们提出了Cross-Modal Transformer(CMT),这是一种简单而有效的端到端管道,用于鲁棒的3D对象检测(见图1(c)&#xf…

Oracle数据库 查看SQL执行计划的几种方法

前言 在日常的运维工作中,SQL优化是DBA的进阶技能,SQL优化的前提是要看SQL的执行计划是否正确,下面分享几种查看执行计划的方法,每一种方法都各有各的好处,可以根据特定场景选择某种方法。 一.使用AUTOTRACE查看执行…