Linux學習第二道坎——系統目錄結構及其作用

歲月已走遠發表於2020-05-15

  如果說Linux學習的第一道坎是系統安裝及對磁碟分割槽的理解,那麼第二道坎就應該是對Linux系統目錄結構及其作用的掌握了(這裡主要指根目錄 / 下的一級目錄)!

  隨著Linux的不斷髮展,Linux的主要目錄也有些微小的調整,當然不同的發行版本之間也有些細微的差別,不過主要目錄結構是不會有太大的變動的!

  廢話不多說,直接開機跑起Linux來拉出目錄一個一個講!這裡主要以CentOS 8 x64為藍本進行講解,其主目錄結構如圖所示:

.
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

  在講解各個目錄的作用前先來簡要講一下截圖上有些特別的地方:

  1、高亮的淺藍色資料夾(binsbinliblib64)表示它們是一些符號連結(Symbolic Link,也叫軟連結,類似Windows的快捷方式),Linux一共有兩種連結型別,另一種是硬連結(Hard Link);

  硬連結:在Linux系統中,儲存在磁碟中的目錄或檔案不論是什麼型別,都會給它分配一個索引節點(Inode:Index node),多個檔案(名)可以同時指向同一個索引節點,當最後一個指向目標索引節點的檔案(名)被刪除後,檔案的資料塊才會被真正刪除;這裡檔案(名)通過索引節點進行真實檔案的連結(引用)就叫硬連結:

  軟連結:刪除軟連結,其指向的真實目錄或檔案不會被刪除;如果刪除軟連結指向的真實(硬連線)目錄或檔案,則該目錄或檔案的所有軟連結都失效:

 

  2、綠色背景的目錄(tmp)表示它是所有使用者都有權讀寫的目錄;

 

  好了,現在來講解每個目錄的作用:

 

  /bin:bin是binary的縮寫,它是 /usr/bin 的軟連結目錄,該目錄主要用於存放普通使用者(非root使用者)可執行的命令程式,即普通命令程式存放目錄,例如 ls、cd、pwd、cat、mv、cp、su等等;

  /boot:見名知義,該目錄是系統啟動引導目錄,其中存放了Linux系統核心檔案和引導檔案,包含了系統啟動過程中所需的所有內容;

  /dev: dev是device的縮寫,用於存放所有非可移動的硬體裝置和終端裝置,該目錄體現一Linux系統中一切皆檔案的思想,Linux中的裝置管理器程式——udev主要就管理著該目錄下的裝置節點,注意與 /media、/mnt 、/proc 和 /sys 等目錄的區別;

  /etc:etc是etcetera的縮寫(表示一些零碎檔案的存放目錄),主要用於存放系統管理所需的各種配置檔案(靜態檔案),是Linux系統的神經中樞!

  /home:普通使用者的主(家)目錄,主要用於存放普通使用者的使用者資料;

  /lib:lib是library的縮寫,它是 /usr/lib 的軟連結目錄,該目錄是共享標準程式庫(也叫動態連結庫,類似windows中的*.dll檔案)的存放目錄,系統開機載入程式以及 /bin 和 /sbin 目錄中的命令程式一般都會呼叫該目錄中對應的lib;

  /lib64:同 /lib 類似,它是 /usr/lib64 的軟連結目錄,只是存放的是64位的標準程式庫;

  /media:media是媒體、媒介的意思,該目錄主要用於掛載可移除裝置,例如U盤、光碟、行動硬碟等,還有已經淘汰了的軟盤等;

  /mnt:mnt是mount的縮寫(裝載、掛載的意思),該目錄主要用於臨時掛載其他檔案系統或裝置,相對於 /media 目錄主要用於自動掛載裝置,/mnt 目錄一般用於手動掛載裝置;

  /opt:opt是option的縮寫(可選),該目錄主要用於安裝一些可選的第三方應用程式,安裝在該目錄的程式,它的所有資料、庫檔案等等都是放在同一個目錄下,不會影響系統的其他任何設定,所安裝的程式不需要了可以直接刪除(注意與 /usr/local的區別);

  /proc:proc是process的縮寫(程式、過程),該目錄是虛擬的,即物理磁碟上不是存在這個目錄的,它是系統執行時,記憶體中的系統資訊和所有程式資訊的對映,可以通過該目錄來獲取系統資訊和程式資訊;

  /root:系統超級管理員root使用者的主(家)目錄,主要用於存放root使用者的使用者資料;

  /run:該目錄用於存放系統執行時所需的檔案,每次系統都會重新生成或修改該目錄中的檔案資料,系統執行過程中也會不時地修改該目錄中的資料,另外,以前是放置在 /var/run 目錄中的,現在 /var/run 目錄成了 /run 目錄的軟連結目錄(獨立自主了!);

  /sbin:sbin是super binary的縮寫,它是 /usr/sbin 的軟連結目錄,該目錄主要用於存放超級管理員root使用者可執行的命令程式,即超級管理員命令程式存放目錄,例如普通使用者需要 sudo 才能執行的命令一般都存放於此;

  /srv:srv是service的縮寫,該目錄用於存放某些服務程式的特定服務資料,例如有些發行版本會在安裝配置完FTP伺服器後,在該目錄建立一個ftp子目錄用於存放FTP服務資料;

  /sys:sys是system的縮寫,該目錄也是一個虛擬目錄,主要用於收集和存放系統核心裝置資訊,主要指各類系統核心裝置及其驅動資訊,例如塊裝置block、匯流排bus、核心kernel、電源power等等;

  /tmp:tmp是temp的縮寫,該目錄主要用於存放使用完後可以隨時銷燬的臨時檔案,如果是系統或應用程式自動產生的臨時檔案,系統或應用程式一般也會自動刪除這些臨時檔案,當然使用者也可以主動在此存放一下臨時檔案,該目錄所有使用者都可讀寫;

  /usr:usr是unix system resource的縮寫,是最龐大的一個目錄,所有的應用程式或程式庫幾乎都安裝或放置在該目錄下,包括前面講到的普通使用者和超級管理員使用者的各類命令程式及程式庫,根目錄下的/bin、/sbin、/lib 和 /lib64 都只是該目錄下某個子目錄的軟連結目錄!該目下的應用程式相關的手冊和其他文件也幾乎都存放在該目錄中(有點像Windows平臺下的【 C:\Windows + C:\Program Files + C:\Program Files (x86) 】);

  /var:var是variable的縮寫(變化的),該目錄主要用於存放頻繁變化的檔案,比如系統和各種服務的輸出日誌,注意與 /tmp目錄的區別;

 

  Linux根目錄下的主要目錄就講完了,接下來再講一下我們伺服器運維過程中使用多非常多的一個重要目錄—— /usr/local 目錄:

  /usr/local:該目錄主要用於存放那些手動安裝的軟體(即不是通過RPM、apt-get等包管理安裝的軟體),該目錄與它的上級目錄 /usr 具有非常相似的子目錄結構,一般情況下由包管理器安裝的軟體會直接存放於 /usr 下,而我們手動安裝的軟體通常會選擇放在 /usr/local 下:

 

  最後,還有一個不常用到的目錄也提一下,那就是系統崩潰等導常情況出現檔案丟失時,用於存放丟失檔案的目錄—— /lost+found :

  /lost+found:該目錄也位於根目錄下,只是在非ext2/ext3格式的檔案系統中一般情況下是見不到它的(在ext2/ext3格式的檔案系統下每個分割槽預設都會有一個lost+found目錄),另外“lost+found”是一個完整的目錄名哦!一般在系統出現崩潰,有系統或服務丟失的檔案需要儲存時,會自動建立該目錄,並將相關檔案存入其中,待後面進行恢復時找回,該目錄預設只有root使用者能開啟。當然,我們也可以手工建立該目錄,只是建立該目錄的命令不是普通的 mkdir 命令,而專用的 mklost+found 命令:

 

  最後的建議:Linux主要目錄結構及其作是是學習Linux必過的一關,一下子記不住就多記幾次,同時可以類比著Windows來輔助理解,每天拿出來看一遍,再加上日常的各類服務的搭建,慢慢就記住了!

 

相關文章