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

  如果說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來輔助理解,每天拿出來看一遍,再加上日常的各類服務的搭建,慢慢就記住了!

 

Tags: