Linux--軟硬鏈接

目錄

0.文件系統

?1.軟硬鏈接

1.1見一下軟硬鏈接

1.2軟硬鏈接的特征

1.3軟硬鏈接是什么,有什么作用(場景)


0.文件系統

Linux--文件系統-CSDN博客


?1.軟硬鏈接


1.1見一下軟硬鏈接

1.這是軟鏈接

這個命令在Unix和Linux系統中用于創建一個符號鏈接(也稱為軟鏈接或軟連接)。具體來說,ln -s file2.txt file_soft.link?命令做了以下事情:

  1. -s:這是一個選項,表示要創建一個符號鏈接(而不是硬鏈接)。
  2. file2.txt:這是你要鏈接到的原始文件或目錄。
  3. file_soft.link:這是你要創建的符號鏈接的名稱。

????????執行這個命令后,file_soft.link?就會成為一個指向?file2.txt?的符號鏈接。你可以像操作普通文件一樣操作?file_soft.link,但實際上你只是在操作?file2.txt。例如,如果你使用?cat?命令查看?file_soft.link?的內容,你將會看到?file2.txt?的內容。

可以看到它們的inode是不一樣的


2.這是硬鏈接

和建立軟連接的區別就是,少了一個-s選項。

使用?cat?命令查看?file_hard.link?的內容,你將會看到?file1.txt?的內容。

可以看到它們的inode是一樣的。

1.2軟硬鏈接的特征

根據上面的現象:

硬鏈接的特征

  1. 硬鏈接是指向文件系統中已存在文件的引用,它們與原始文件共享相同的inode(索引節點)號和數據塊。
  2. 硬鏈接只是文件的另一個名稱或別名,它們與原始文件沒有區別。
  3. 硬鏈接只能對已經存在的文件進行創建,不能跨文件系統或分區。
  4. 硬鏈接不能對目錄進行創建,只能對文件創建。
  5. 刪除一個硬鏈接文件并不會影響其他具有相同inode號的文件。只有當所有硬鏈接和原始文件都被刪除時,文件的數據塊才會被釋放。

軟鏈接(符號鏈接)的特征

  1. 軟鏈接是一個特殊的文件,其數據塊內容是它所鏈接文件的路徑名。
  2. 軟鏈接可以跨越文件系統或分區,因為它只是保存了目標文件的路徑。
  3. 軟鏈接可以對文件或目錄進行創建。
  4. 如果刪除軟鏈接所指向的原始文件,軟鏈接就會變成“死鏈接”,因為它指向的文件已經不存在了,如果將軟鏈接文件刪除了,更不會影響目標文件,軟鏈接就相當于一個快捷方式從。
  5. 軟鏈接有自己的inode號,但與原始文件不同。

軟硬鏈接的區別

  1. inode號:硬鏈接與原始文件共享相同的inode號,而軟鏈接則有自己的inode號。
  2. 跨文件系統:軟鏈接可以跨文件系統或分區創建,而硬鏈接則不能。
  3. 對目錄的引用:硬鏈接不能對目錄進行創建,而軟鏈接可以。
  4. 刪除影響:刪除一個硬鏈接文件并不會影響其他具有相同inode號的文件;而刪除軟鏈接所指向的原始文件,則會使軟鏈接變成“死鏈接”。
  5. 文件類型:硬鏈接不是特殊的文件類型,它與原始文件完全一致;而軟鏈接是特殊的文件類型,其數據塊內容是目標文件的路徑名。

我們還發現屬性中有一列硬鏈接數


1.3軟硬鏈接是什么,有什么作用(場景)

1.軟鏈接的使用場景:

假如我有一個這樣的項目結構;

然后我們再拷貝一個ls變成自己的可執行程序myls:

那如果我們的可執行程序被放到了一個很深的路徑下,我們就只能這樣運行我們的可執行程序,這就十分的麻煩了

????????創建軟鏈接(快捷方式),所以軟連接就是一個快捷方式,方便我們訪問/執行我們的目標文件。

系統下的軟鏈接:我們系統中有各種的庫,一般就用軟鏈接的方式,讓我們使用它們的名字,就能找到對應的庫


2.硬鏈接的使用場景:

我們給file1.txt建立了硬鏈接,我們可以看到硬鏈接(磁盤級的引用計數)數變成了2.

????????其實,硬鏈接就是一個文件名和inode的映射關系,建立硬鏈接,就是再指定目錄下,添加一個新的文件名和inode number 的映射關系。inode number就像一個指針,有兩個一樣的inode number指向同一個屬性,所以它的引用計數就是2(有2個文件名字符串通過inode number指向我的inode)。刪除一個文件名和inode的關系,引用計數就變為1,再將硬鏈接刪除,引用計數變為0,此時文件才會被刪除。

????????1.硬鏈接主要用于在文件系統中為同一物理文件創建多個訪問路徑。例如,你可能希望在不復制文件內容的情況下,將某個文件同時放置在多個目錄中。這時,你可以使用硬鏈接。這種方式也可以被理解成,為目標文件建立備份。

? ? ? ? 2.硬鏈接構建Linux的路徑結構,讓我們可以使用. ..來進行路徑定位。

? ? ? ? 我們新建了一個目錄test,當我們說一個目錄的引用計數為2時,這通常是因為每個目錄在其父目錄中都有一個條目(即一個硬鏈接),并且它自己還有一個指向自己的.(當前目錄)的硬鏈接。像bin目錄引用計數為3,這是因為bin內部還存在一個目錄指向通過inode number指向自己。

? ? ? ? 在Linux中是不允許對目錄? 建立硬鏈接的,這會導致目錄循環。例如,如果目錄A硬鏈接到目錄B,而目錄B又硬鏈接回目錄A,那么在遍歷目錄結構時,系統可能會陷入無限循環,導致無法正確定位或訪問目錄。

至此我們可以知道定位一個文件,只有兩種方式:

? ? ? ? 1.通過路徑(軟連接)

? ? ? ? 2.直接找到目標文件的inode(通過inode number)(硬鏈接)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13631.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于 Prometheus 的超算彈性計算場景下主機監控最佳實踐

作者:左知 超算場景的業務特點 主機監控,或許是監控/可觀測領域最傳統和普遍的需求。在超算訓練,AI 大規模訓練的業務場景下,主機監控又有哪些痛點和難點呢?根據我們針對多個大規模超算客戶的需求整理,超…

Python案例題目,入門小白題

1.抓取鏈家前十頁的數據 鏈家網址:長沙房產網_長沙房地產_長沙房產門戶(長沙鏈家網) 1.1.計算均價和總價 import time ? from selenium import webdriver from selenium.webdriver.common.by import By ? driver webdriver.Chrome() driver.get("https://c…

linux系統內存持續飆高的排查方法

目錄 前言: 1、查看系統內存的占用情況 2、找出占用內存高的進程 3、解決方法 4、補充:如果物理內存使用完了,會發生的情況 前言: 如果一臺服務器內存使用率持續處于一個高峰值,服務器可能會出現響應慢問題。例如s…

使用@Autowired + Map 實現策略模式

使用Autowired Map 實現策略模式 創建接口 public interface UserService {String getName(); }創建多個類實現上面的接口 實現一 import com.boot.service.UserService; import org.springframework.stereotype.Service;Service("zhangsan") public class Zhangsan…

代碼隨想錄算法訓練營第十六天|LeetCode104 二叉樹的最大深度、LeetCode111 二叉樹的最小深度、LeetCode222完全二叉樹的節點個數

題1: 指路:LeetCode104 二叉樹的最大深度 思路與代碼: 1.遞歸 求左右子樹的最大深度后加1(根到子樹也有1個深度單位)。代碼如下: class Solution { public:int maxDepth(TreeNode* root) {int ans 0;if (root NULL) return…

當他們在說業務的時候,到底在說什么

業務就是通過提供產品和服務給客戶,以獲取某種價值,形成業務閉環,并能自負盈虧。 文章會以生動形象的比喻來介紹業務到底是什么。 什么是業務? 業務,就像一場精彩的舞臺劇,每個角色都有自己的任務和目標…

electron學習記錄

1.下載electron electron/electron-quick-start: Clone to try a simple Electron app (github.com) 下載實例模板 2.安裝依賴 npm源改成中國鏡像 npm config set registry https://registry.npmmirror.com 然后用cnpm i 來安裝 npm換官方源 npm config set registry https:…

QT--TCP網絡通訊工具編寫記錄

QT–TCP網絡通訊工具編寫記錄 文章目錄 QT--TCP網絡通訊工具編寫記錄前言演示如下:一、服務端項目文件:【1.1】server_tcp.h 服務端聲明文件【1.2】thread_1.h 線程處理聲明文件【1.3】main.cpp 執行源文件【1.4】server_tcp.cpp 服務端邏輯實現源文件【…

cuda 內核啟動

C 使用 __global__ 聲明說明符定義內核&#xff0c;并使用新的 <<<...>>> 執行配置語法指定內核調用的 CUDA 線程數&#xff08;請參閱 C 語言擴展&#xff09;。 每個執行內核的線程都有一個唯一的線程 ID&#xff0c;可以通過內置變量在內核中訪問。 示例…

【最全的excel轉json!!!】使用Python腳本提取excel文本中的數據到json中

比如說&#xff1a;我有一個1.xlsx的文件需要轉成對應的json格式。 1&#xff09; excel 文件的大概內容&#xff1a; 2&#xff09;保存的方式類似于以下這種情況&#xff1a; 用Python腳本來實現 import pandas as pd import json# 讀取Excel文件 excel_path r"D:…

基礎知識篇:大語言模型核心原理解析

1??人工智能基礎概念全景圖 &#x1f4a1; &#x1f9e0;人工智能與機器學習 人工智能&#xff08;AI&#xff09;是計算機科學的一個分支&#xff0c;旨在模擬人類的智能來解決問題。而機器學習&#xff08;ML&#xff09;是AI的一個子集&#xff0c;它的魅力在于不需要顯…

【MySQL精通之路】MySQL8.0升級過程升級了什么

目錄 1.升級內容 1.1 mysql系統庫 1.2.其他庫 2.步驟 2.1 步驟1&#xff1a;數據字典庫升級。 2.2 步驟2&#xff1a;服務器升級。 3.mysql_upgrade 3.1 執行正常升級&#xff08;根據需要執行步驟1和2&#xff09;&#xff1a; 3.2 必要時僅執行步驟1&#xff1a; 3…

【MySQL精通之路】InnoDB(6)-磁盤結構(6)-Undolog

1.介紹 Undolog是與單個讀寫事務相關聯的Undolog記錄的集合。 Undolog包含有關如何撤消事務對聚集索引記錄最新更改的信息。如果另一個事務需要將查看一致性讀的一部分原始數據&#xff0c;則會從Undolog記錄中檢索未修改的數據。 2.結構 Undolog記錄存在于Undolog段中 而Un…

LLMPerf-為LLM提供可重現的性能指標

LLMPerf-為LLM推理提供可復現的性能指標 翻譯自文章&#xff1a;Reproducible Performance Metrics for LLM inference 結合之前的LLMPerf測試大模型API性能的文章進行查看&#xff0c;效果更佳。 1. 摘要 我們見過許多關于LLM性能的聲明&#xff1b;然而&#xff0c;這些聲明往…

Android面試題之Kotlin泛型和reified關鍵字

本文首發于公眾號“AntDream”&#xff0c;歡迎微信搜索“AntDream”或掃描文章底部二維碼關注&#xff0c;和我一起每天進步一點點 //泛型 class MagicBox<T>(item:T){var available falseprivate var subject:T itemfun fetch() : T? {return subject.takeIf { avai…

Ubuntu徹底卸載Nginx

停止Nginx服務 sudo systemctl stop nginx卸載Nginx軟件包 sudo apt purge nginx nginx-common nginx-core清除配置文件和依賴項 清除Nginx的配置文件 sudo rm -rf /etc/nginx清除Nginx安裝的依賴項 sudo apt autoremove清除相關文件和目錄 刪除Nginx的日志文件 sudo rm…

配置旁掛二層組網直接轉發示例(命令行)

業務需求 企業用戶通過WLAN接入網絡&#xff0c;以滿足移動辦公的最基本需求。且在覆蓋區域內移動發生漫游時&#xff0c;不影響用戶的業務使用。 組網需求 AC組網方式&#xff1a;旁掛二層組網。DHCP部署方式&#xff1a; AC作為DHCP服務器為AP分配IP地址。匯聚交換機SwitchB作…

深度學習基礎之《TensorFlow框架(18)—卷積神經網絡(2)》

一、卷積層 1、卷積層&#xff08;Convolutional Layer&#xff09;介紹 卷積神經網絡中每層卷積層由若干卷積單元&#xff08;卷積核&#xff09;組成&#xff0c;每個卷積單元的參數都是通過反向傳播算法最佳化得到的 卷積運算的目的是特征提取&#xff0c;第一層卷積層可能…

Gradle和Maven項目解決Spring Boot Configuration Annotation Processor not configured警告

問題描述 寫了一個配置類,加了注解@ConfigurationProperties(prefix = “xxx”) 后一直報警告:Spring Boot Configuration Annotation Processor not configured 意思是 Spring boot 未配置注解處理器 解決過程 出現這個問題后,百度查了解決方式 1.maven項目 maven項目是…

學習前端第四十四天(瀏覽器事件簡介)

一、事件處理程序 對事件作出響應&#xff0c;可以分配一個 處理程序 &#xff0c; 一個在事件發生時運行的函數 1、HTML特性綁定事件處理函數 <button id"btn1" οnclick"fn();console.log(xc)">保存1</button> 2、DOM屬性綁定事件處理函數…