linux檔案是什麼樣的
linux檔案就是目錄(檔案)。為了方便管理檔案和目錄,Linux系統將它們組織成一個以根目錄「/」開始的倒置的樹狀結構。 Linux中的目錄和Windows系統中的資料夾類似,不同之處在於,Linux系統中的目錄也被當作檔案看待。
本教學操作環境:linux7.3系統、Dell G3電腦。
linux檔案就是目錄(檔案)。
為了方便管理檔案和目錄,Linux 系統將它們組織成一個以根目錄 / 開始的倒置的樹狀結構。 Linux 中的目錄,和 Windows 系統中的資料夾類似,不同之處在於,Linux 系統中的目錄也被當作檔案看待。
在 Linux 作業系統中,所有的檔案和目錄都被組織成以一個根節點「/」開始的倒置的樹狀結構,如圖 1 所示。
圖1 Linux 系統檔案與目錄組織示意圖
其中,目錄就相當於Windows 中的資料夾,目錄中存放的既可以是文件,也可以是其他的子目錄,而檔案中儲存的是真正的資訊。
檔案系統的最頂層是由根目錄開始的,系統使用“/”來表示根目錄,在根目錄之下的既可以是目錄,也可以是文件,而每一個目錄中又可以包含(子)目錄或檔案。如此反覆就可以構成一個龐大的檔案系統。
其實,使用這種樹狀、具有層次的檔案結構主要目的是方便檔案系統的管理和維護,想像一下,如果所有的檔案都放在一個目錄下,其檔案系統的管理和維護將變成一場惡夢。
現實中也有許多類似的例子,例如在整個行政管理體制中,村民就相當於文件,他們住在一個村莊中,村莊就是存放村民的目錄。許多村莊又組成了個鄉,這個鄉就相當於儲存村的目錄,依此類推,最終就建構出了一個龐大的行政區域管理結構圖。
注意,目錄名稱或檔案名稱都是區分大小寫的,如 dog、DOG 和 Dog 為 3 個不同的目錄或檔案。完整的目錄或檔案路徑是由一連串的目錄名稱所組成的,其中每一個目錄由「/」來分隔。如 cat 的完整路徑是 /home/cat。
在檔案系統中,有兩個特殊的目錄,一個是使用者所在的工作目錄,即當前目錄,可用一個點「.」表示;另一個是當前目錄的上一層目錄,也叫父目錄,用兩點「..」表示。
如果一個目錄或檔案名稱是以一個點開始,就表示這個目錄或檔案是一個隱藏目錄或檔案。即以預設方式査找(後續會講查找指令)時,不顯示該目錄或檔案。
為了方便管理和維護,Linux 系統採用了檔案系統層次標準,也稱為FHS 標準,它規定了根目錄下各個目錄應該存在哪些類型的檔案(或子目錄),比如說,在/bin 和/sbin 目錄中存放的應該是可執行檔
linux檔案系統(filesystem)
首先簡單認識硬碟的實體結構,整體來說,硬碟結構包括: 碟片、磁頭、碟片主軸、控制馬達、磁頭控制器、資料轉換器、介面、快取等幾個部分。所有的盤片(一般硬碟裡有多個盤片,盤片之間平行)都固定在一個主軸上。在每個盤片的儲存面上都有一個磁頭,磁頭與盤片之間的距離很小(所以劇烈震動容易損壞),磁頭連在一個磁頭控制器上,統一控制各個磁頭的運動。磁頭沿著盤片的半徑方向動作,而盤片則按照指定方向高速旋轉,這樣磁頭就可以到達盤片上的任意位置了。
一個磁碟由多個圓環組成,這些圓環就叫做磁軌,而一個磁軌又分成多個磁區(sector)一個一個磁區是512Byte,硬碟所有磁碟相同位置的圓環組成一個磁柱(Cylinder)。硬碟容量為:512Byte * 扇區數* 磁柱數*磁頭數
前面三個數都好理解,可能有人不理解乘以磁頭數是乾嘛,因為前面三個數相當於計算一個圓的儲存量,而一個磁頭讀取一個圓,所以乘以磁頭數量就等於圓面積乘以圓數量。
#磁碟分割的最小單位是磁柱(Cylinder)
磁碟的分割其實就是記錄一個分割區(partition)的起始磁柱與結束磁柱,而這些被記錄的資訊都存放在主要開機磁區( Master Boot Recorder, MBR )。事實上, MBR 就是在一塊硬碟的第零軌上面,這也是電腦開機之後要去利用該硬碟時, 必須讀取的第一個區域。
思考一個問題:MBR的大小是不是固定的?
我們這麼想,資料的儲存順序為 : MBR 其他資料 。如果MBR的大小不固定,例如原來MBR存放了3個partition的訊息,現在我們要新增一個partition,會出現什麼後果?後果就是所有的「其他資料」都要順序的向後移動一個partition資訊的距離。是不是想到了數組的增刪了。所以我們希望將MBR固定,事實也是如此MBR被固定為只能存放4個partition的資訊。這樣似乎好多了,但是只有四個partition,夠用嗎?設計者當然也想到了這個問題,所以將partition分為Primary和Extended兩類(E最多只能有一個)。其中P是可以直接使用的,而E不能直接使用,E相當於一個指針,指向擴充的partition的位置資訊儲存處。
filesystem也即檔案系統,每個oartition都可以由自己的filesystem,例如fat32, ntfs之類的
不同的partuition雖然filesystem不一樣,但是都是用來儲存資料的。前面我們介紹了硬碟的最小儲存單元為sector(磁區,一般為512Byte),但是filesystem的最小儲存單元不是sector而是block。 block是sector的2的次方倍數,磁頭一次讀取一個block的資料。所以如果block過小,則讀取一個檔案時磁頭需要讀取較多數量的block,這樣效率很低,但是block也不能過大,應為一個block中只能存在一個檔案,例如block大小為100M ,那麼如果有100.1M的文件,則需要佔用兩個block,浪費了大量空間。
每個filesystem中的第一個block稱為superblock。 superblock的作用是儲存filesystem的大小,空的和填滿的區塊以及其他的總書和諸如此類的資訊。也就是說如果你要使用一個filesystem的時候,第一個要經過的就是superblock這個塊了,如果superblock壞了,這個partition大概也回天乏術了。
#我們既然是學習linux,自然要學習linux的filessystem,我們以linux最標準的EXT2做說明。
EXT2中的filesystem分為inode區和block區,其中inode儲存檔案的相關屬性等信息,而block區儲存檔案的內容,每個inode都充當指針pointer的作用,它能描述文件的相關屬性並指向該檔案所在block的位置。 blocks與inodes的數量在一開始格式化的時候就已經固定了。
整個filesystem示意圖:
- SuperBlock:如前所述, Superblock 是記錄整個filesystem 相關資訊的地方, 沒有Superblock ,就沒有這個filesystem 了。他所記錄的資訊主要有:
- block 與inode 的總量;
- 未使用與已使用的inode / block 數量;
- 一個block 與一個inode 的大小;
- filesystem 的掛載時間、最近一次寫入資料的時間、最近一次檢驗磁碟(fsck) 的時間等檔案系統的相關資訊;
- 一個valid bit 數值,若此檔案系統已掛載,則valid bit 為0 ,若未被掛載,則valid bit 為1 。
- Group Description:紀錄此block 由由何處開始記錄;
- Block bitmap:此處記錄那個block 有沒有被使用;
- # Inode bitmap:此處記錄那個inode 有沒有被使用;
- Inode table:為每個inode 資料存放區;
- Data Blocks:為每個block 資料存放區。
#我們知道硬碟的存取速度相對於記憶體來說是很慢的,linux為了提高整體的速度,採用非同步處理的方式。
什麼是非同步呢?舉例來說:『當系統讀取了某一個檔案, 則該檔案所在的區塊資料會被載入到記憶體當中,所以該磁碟區塊就會被放置在主記憶體的緩衝快取區中, 若這些區塊的資料被改變時,剛開始資料僅有主記憶體的區塊資料會被改變, 而且在緩衝區當中的區塊資料會被標記為『 Dirty ’,這個時候磁碟實體區塊尚未被修正!所以也即表示,這些『 Dirty 』區塊的資料必需回寫到磁碟當中, 以維持磁碟實體區塊上的資料與主記憶體中的區塊資料的一致性。 ’
所以linux的關機真的要注意,否則可能會造成檔案的遺失甚至是磁碟的損毀! ! !
所以linux的關機真的要注意,否則可能會造成檔案的遺失甚至是磁碟的損毀! ! !
#我們上面提到的都是關於檔案系統(filesystem),但要能夠讓我們的Linux 使用的話, 非得『掛載(mount)』上我們的Linux 系統才行啊!剛剛我們上面提到了目錄可以記錄檔案名稱與 inode 的相關信息,此外, 目錄也是讓我們得以跟 filesystem 產生對應的入口點。因此,我們稱那個入口點目錄為『掛載點 (mount point) 』
相關推薦:《Linux影片教學》
以上是linux檔案是什麼樣的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)
