linux的目錄結構

EdisonYao發表於2021-08-24

簡介

  在 Windows 中,我們會看到磁碟驅動器的標識,比如C:\E:\,檔案和目錄名都跟在驅動器名後面。

Linux 和 Windows 完全不同,在 Linux 中你可以在根目錄下執行ls,觀察它的目錄結構:

 

 

 目錄詳解

/ - 根目錄

  顧名思義,根目錄就是所有目錄所在的目錄,它是 Linux 中所有目錄的根,從某種概念上講,它有點類

似於 Windows中的磁碟驅動器符號。之後將會看到,所有其他目錄都是以/開頭的。

/bin - 存放重要的使用者二進位制檔案目錄

  bin 是binary的縮寫,/bin 目錄存放了非常重要的使用者二進位制檔案,其實就是一些程式。需要特別說明的

是,/bin 中存放的都是在單使用者維護模式下還能被操作的命令,這些命令可以被 root 和普通使用者使用。在 / bin

中我們可以看到例如chmoddu這些我們經常使用的 Linux 命令程式。

/boot - 存放系統啟動時需要檔案的目錄

  /boot 中存放的主要是系統啟動時需要用到的檔案,比如EFIGRUB以及 Linux 核心。

/dev - 裝置檔案目錄

  Linux 將所有東西都看成檔案,裝置也不例外,不論是實體的硬體裝置還是虛擬裝置。實體硬體比如第一

塊被檢測到的硬碟會被掛載到/dev/sda,第二塊會被掛載到/dev/sdb,以此類推。虛擬裝置比如null

randomstderrstdinstdout

/etc - 配置檔案目錄

  etc 的含義是Et cetera,表示一些相關的其他東西,/etc 從 UNIX 早期開始就被用來存放配置檔案,一直

沿用至今。需要注意的是,/etc 中存放的是系統配置檔案,特定使用者的配置檔案放在每個使用者的 / home 目錄下。

/home - 使用者目錄

  /home 目錄中存放的是每個使用者的使用者目錄,比如有一個使用者叫 tom,/home/tom 就是他的使用者目錄,每

個使用者的使用者目錄中存放的使用者資料和使用者配置檔案,比如每個使用者的.bashrc檔案、.ssh目錄等。普通使用者

只能訪問自己的使用者目錄而不能訪問別人的,root 使用者則沒有此限制。

/lib - 重要的共享庫目錄

  /lib 目錄中存放的是/bin/sbin中那些重要的二進位制檔案(程式)需要的共享庫。另外/usr/bin中二

進位制檔案(程式)需要的共享庫都存放在/usr/lib

/lost+found - 恢復檔案目錄

  每個 Linux 檔案系統都有 / lost+found 目錄,當檔案系統崩潰時,在下次啟動時將會進行檔案系統自檢,

任何在崩潰過程中損壞的檔案都將被放入 / lost+found,你可以嘗試找到並恢復這些檔案。

  當你將一些可刪除媒介掛(比如 CD,U 盤,光碟機等)載到計算機上時,系統會在 / media 下自動建立子目

錄,之後就可以通過訪問這個子目錄來訪問媒介。比如你在電腦上插入 CD,在 / media 目錄下就會自動生成一

個子目錄,你可以通過訪問這個子目錄來訪問 CD 的內容。

/mnt - 臨時掛載點目錄

  mnt 是mount的縮寫,各種裝置掛載到系統後,會在 / mnt 目錄下生成相應裝置的目錄,比如掛載光碟機、文

件系統、CD 等。

/opt - 可選包目錄

  opt 是Optional的意思,系統中安裝的可選軟體包被存放在 / opt 目錄中。

/proc - 核心和程式檔案目錄

  /proc 是一個虛擬目錄,並不包含任何標準檔案。當系統啟動後,會對當前核心和硬體資訊進行檢測,並將

這些資訊放在這個目錄中(其實都在記憶體中)。你可以使用cat /proc/meminfo來檢視關於記憶體的一些資訊,或

者使用cat /proc/version來檢視 Linux 核心資訊。

/root - root 使用者的 home 目錄

  和一般使用者的 home 目錄放在/home/{使用者名稱}不同,root 使用者的 home 目錄專門被放在/root

/run - 應用程式狀態目錄

  /run 目錄用來存放應用程式在執行期間需要的一些短暫存在的檔案,比如 socket 和 pid 檔案,這些檔案

對這些應用程式的執行很重要,因此不能把他們放在 / tmp 目錄下,因為 / tmp 目錄下的檔案有可能會被系統

清空。

/sbin - 系統管理員用的二進位制檔案目錄

  /sbin 目錄和 /bin 目錄有些類似,都是存放二進位制檔案。比較特殊的是,/sbin 目錄存放的都是系統管理

的命令程式,一般只有 root 使用者能使用。

/srv - 服務資料目錄

  /srv 目錄主要用來存放一些系統提供的網路服務的資料,如果你在機器上執行一個 HTTP 伺服器來對外提

供靜態檔案時,/srv/http目錄將存放這些靜態檔案,如果你執行一個 FTP 伺服器對外提供檔案,則/srv/ftp

錄將存放這些檔案。

/tmp - 臨時檔案目錄

  應用程式會將一些臨時檔案存放在 / tmp 目錄中,一般來說當系統重啟後,/tmp 下的檔案會被自動清空,

也會被一些監控程式清空。

/usr - 使用者二進位制檔案和只讀檔案目錄

  /usr 目錄下存放的是使用者使用的程式,可以很明顯地發現,Linux 將普通使用者和系統使用的程式分開存

放,比如上面提到過,系統使用的一些重要程式存放在 / bin,而那些不重要的程式就被放在 / usr/bin。不太

重要的系統管理程式存放在 / usr/sbin 而不是 / sbin。usr 也被稱為UNIX Software Resource,這是比較早期

的說法。下面是 / usr目錄下常見的幾個子目錄的含義:

  • /usr/bin 存放使用者命令
  • /usr/include 存放程式語言的標頭檔案和包含檔案
  • /usr/lib 存放各個應用程式的庫函式和目標檔案
  • /usr/local 存放系統管理員下載的軟體的安裝目錄
  • /usr/sbin 存放不常用的系統命令
  • /usr/src 存放原始碼

/var - 變動資料目錄

  /var 一般用來存放經常變動的資料,比如日誌檔案和快取檔案。下面是 / var 目錄下常見的幾個子目錄的含義:

  1. /var/cache 存放應用程式執行產生的臨時檔案
  2. /var/lib 存放程式在執行過程中需要使用到的資料檔案,每個軟體在此目錄下都有自己獨自的目錄
  3. /var/lock 存放程式的鎖狀態
  4. /var/log 存放各種日誌檔案
  5. /var/mail 存放個人電子郵箱
  6. /var/run 有些程式在執行後,會將他們的 pid、socket 檔案放置到這個目錄中

軟體安裝規範

  根據FHS(http://www.pathname.com/fhs/)的官方檔案指出, 他們的主要目的是希望讓使用者可以瞭解到

已安裝軟體通常放置於那個目錄下, 所以他們希望獨立的軟體開發商、作業系統製作者、以及想要維護系統

的使用者,都能夠遵循FHS的標準。也就是說,FHS的重點在於規範每個特定的目錄下應該要放置什麼樣子的

資料而已。這樣做好處非常多,因為Linux作業系統就能夠在既有的面貌下(目錄架構不變)發展出開發者想要

的獨特風格。

  • 可分享的

可以分享給其他系統掛載使用的目錄,所以包括執行檔案與使用者的郵件等資料, 是能夠分享給網路上其他主機掛載用的目錄;

  • 不可分享的

自己機器上面運作的裝置檔案或者是與程式有關的socket檔案等, 由於僅與自身機器有關,所以當然就不適合分享給其他主機了。

  • 不變的

有些資料是不會經常變動的,跟隨著distribution而不變動。例如函式庫、檔案說明檔案、系統管理員所管理的主機服務配置檔案等等;

  • 可變動的

經常改變的資料,例如登入檔案、一般使用者可自行收受的新聞組等。

  事實上,FHS針對目錄樹架構僅定義出三層目錄底下應該放置什麼資料而已,分別是下面這三個目錄的定義:

  • /(root, 根目錄):與開機系統有關
  • /usr (unix software resource):與軟體安裝/執行有關
  • /var (variable):與系統運作過程有關

相關文章