(一)Linux之目錄結構

天然呆dull發表於2021-08-23

Linux之目錄結構

一、概述

學習 Linux,不僅限於學習各種命令,瞭解整個 Linux 檔案系統的目錄結構以及各個目錄的功能同樣至關重要。

使用 Linux 時,通過命令列輸入 ls -l / 可以看到,在 Linux 根目錄(/)下包含很多的子目錄(稱為一級目錄),例如 bin、boot、dev 等。同時,各一級目錄下還含有很多子目錄(稱為二級目錄),比如 /bin/bash、/bin/ed 等。Linux 檔案系統目錄總體呈現樹形結構,/ 根目錄就相當於樹根。

由於 Linux 系統免費開源,使得 Linux 發行版本有很多,利用 Linux 開發產品的團隊也有很多,如果任由每個人都按照自己的想法來配置 Linux 系統檔案目錄,後期可能會產生諸多的管理問題。試想,如果你進入一家公司,所用 Linux 系統的檔案目錄結構與所學的完全不同,實在令人頭疼。

為了避免諸多使用者對 Linux 系統目錄結構天馬行空,Linux 基金會發布了 FHS 標準。多數 Linux 發行版系統都遵循這一標準。

FHS(Filesystem Hierarchy Standard),檔案系統層次化標準,該標準規定了 Linux 系統中所有一級目錄以及部分二級目錄(/usr 和 /var)的用途。釋出此標準的主要目的就是為了讓使用者清楚地瞭解每個目錄應該存放什麼型別的檔案。

一、基本介紹

  1. Linux 的檔案系統是採用級層式的樹狀目錄結構,在此結構中的最上層是根目錄“/”,然後在此目錄下再建立其他的

    目錄。

  2. 深刻理解 Linux 樹狀檔案目錄是非常重要的,這裡我給大家說明一下。

  3. 記住一句經典的話:在 Linux 世界裡,一切皆檔案(!!)

  4. 示意圖

二、具體的目錄結構(不用背,知道即可)

FHS 認為,Linux 系統的根目錄(/)最為重要(沒有之一),其原因有以下 2 點:

  1. 所有目錄都是由根目錄衍生出來的;
  2. 根目錄與系統的開機、修復、還原密切相關;

因此,根目錄必須包含開機軟體、核心檔案、開機所需程式、函式庫、修復系統程式等檔案,如表 1 所示。


表 1 Linux一級目錄及其作用

一級目錄 功能(作用)
/bin/ 存放系統命令,普通使用者和 root 都可以執行。放在 /bin 下的命令在單使用者模式下也可以執行
/boot/ 系統啟動目錄,儲存與系統啟動相關的檔案,如核心檔案和啟動載入程式(grub)檔案等
/dev/ 裝置檔案儲存位置
/etc/ 配置檔案儲存位置。系統內所有采用預設安裝方式(rpm 安裝)的服務配置檔案全部儲存在此目錄中,如使用者資訊、服務的啟動指令碼、常用服務的配置檔案、環境變數配置檔案等
/home/ 普通使用者的主目錄(也稱為家目錄)。在建立使用者時,每個使用者要有一個預設登入和儲存自己資料的位置,就是使用者的主目錄,所有普通使用者的主目錄是在 /home/ 下建立一個和使用者名稱相同的目錄。如使用者 liming 的主目錄就是 /home/liming
/lib/ 系統呼叫的函式庫儲存位置
/media/ 掛載目錄。系統建議用來掛載媒體裝置,如軟盤和光碟
/mnt/ 掛載目錄。早期 Linux 中只有這一個掛載目錄,並沒有細分。系統建議這個目錄用來掛載額外的裝置,如 U 盤、行動硬碟和其他作業系統的分割槽
/misc/ 掛載目錄。系統建議用來掛載 NFS 服務的共享目錄。雖然系統準備了三個預設掛載目錄 /media/、/mnt/、/misc/,但是到底在哪個目錄中掛載什麼裝置可以由管理員自己決定。例如,筆者在接觸 Linux 的時候,預設掛載目錄只有 /mnt/,所以養成了在 /mnt/ 下建立不同目錄掛載不同裝置的習慣,如 /mnt/cdrom/ 掛載光碟、/mnt/usb/ 掛載 U 盤,都是可以的
/opt/ 第三方安裝的軟體儲存位置。這個目錄是放置和安裝其他軟體的位置,手工安裝的原始碼包軟體都可以安裝到這個目錄中。不過筆者還是習慣把軟體放到 /usr/local/ 目錄中,也就是說,/usr/local/ 目錄也可以用來安裝軟體
/root/ root 的主目錄。普通使用者主目錄在 /home/ 下,root 主目錄直接在“/”下
/sbin/ 儲存與系統環境設定相關的命令,只有 root 可以使用這些命令進行系統環境設定,但也有些命令可以允許普通使用者檢視
/srv/ 服務資料目錄。一些系統服務啟動之後,可以在這個目錄中儲存所需要的資料
/tmp/ 臨時目錄。系統存放臨時檔案的目錄,在該目錄下,所有使用者都可以訪問和寫入。建議此目錄中不能儲存重要資料,最好每次開機都把該目錄清空

FHS 針對根目錄中包含的子目錄僅限於表 1,但除此之外,Linux 系統根目錄下通常還包含表 2 中的幾個一級目錄。


表 2 其他一級目錄及功能

一級目錄 功能(作用)
/lost+found/ 當系統意外崩潰或意外關機時,產生的一些檔案碎片會存放在這裡。在系統啟動的過程中,fsck 工具會檢查這裡,並修復已經損壞的檔案系統。這個目錄只在每個分割槽中出現,例如,/lost+found 就是根分割槽的備份恢復目錄,/boot/lost+found 就是 /boot 分割槽的備份恢復目錄
/proc/ 虛擬檔案系統。該目錄中的資料並不儲存在硬碟上,而是儲存到記憶體中。主要儲存系統的核心、程式、外部裝置狀態和網路狀態等。如 /proc/cpuinfo 是儲存 CPU 資訊的,/proc/devices 是儲存裝置驅動的列表的,/proc/filesystems 是儲存檔案系統列表的,/proc/net 是儲存網路協議資訊的......
/sys/ 虛擬檔案系統。和 /proc/ 目錄相似,該目錄中的資料都儲存在記憶體中,主要儲存與核心相關的資訊
  • Linux /usr目錄

usr(注意不是 user),全稱為 Unix Software Resource,此目錄用於儲存系統軟體資源。FHS 建議所有開發者,應把軟體產品的資料合理的放置在 /usr 目錄下的各子目錄中,而不是為他們的產品建立單獨的目錄。

Linux 系統中,所有系統預設的軟體都儲存在 /usr 目錄下,/usr 目錄類似 Windows 系統中 C:\Windows\ + C:\Program files\ 兩個目錄的綜合體。

FHS 建議,/usr 目錄應具備表 3 所示的子目錄。


表 3 /usr 子目錄及其功能

子目錄 功能(作用)
/usr/bin/ 存放系統命令,普通使用者和超級使用者都可以執行。這些命令和系統啟動無關,在單使用者模式下不能執行
/usr/sbin/ 存放根檔案系統不必要的系統管理命令,如多數服務程式,只有 root 可以使用。
/usr/lib/ 應用程式呼叫的函式庫儲存位置
/usr/XllR6/ 圖形介面系統儲存位置
/usr/local/ 手工安裝的軟體儲存位置。我們一般建議原始碼包軟體安裝在這個位置
/usr/share/ 應用程式的資原始檔儲存位置,如幫助文件、說明文件和字型目錄
/usr/src/ 原始碼包儲存位置。我們手工下載的原始碼包和核心原始碼包都可以儲存到這裡。不過筆者更習慣把手工下載的原始碼包儲存到 /usr/local/src/ 目錄中,把核心原始碼儲存到 /usr/src/linux/ 目錄中
/usr/include C/C++ 等程式語言標頭檔案的放置目錄
  • Linux /var 目錄

/var 目錄用於儲存動態資料,例如快取、日誌檔案、軟體執行過程中產生的檔案等。通常,此目錄下建議包含如表 4 所示的這些子目錄。

表 4 /var子目錄及其功能

/var子目錄 功能(作用)
/var/lib/ 程式執行中需要呼叫或改變的資料儲存位置。如 MySQL 的資料庫儲存在 /var/lib/mysql/ 目錄中
/var/log/ 登陸檔案放置的目錄,其中所包含比較重要的檔案如 /var/log/messages, /var/log/wtmp 等。
/var/run/ 一些服務和程式執行後,它們的 PID(程式 ID)儲存位置
/var/spool/ 裡面主要都是一些臨時存放,隨時會被使用者所呼叫的資料,例如 /var/spool/mail/ 存放新收到的郵件,/var/spool/cron/ 存放系統定時任務。
/var/www/ RPM 包安裝的 Apache 的網頁主目錄
/var/nis和/var/yp NIS 服務機制所使用的目錄,nis 主要記錄所有網路中每一個 client 的連線資訊;yp 是 linux 的 nis 服務的日誌檔案存放的目錄
/var/tmp 一些應用程式在安裝或執行時,需要在重啟後使用的某些檔案,此目錄能將該類檔案暫時存放起來,完成後再行刪除

根據以上各表列舉的各目錄及作用,如果我們要做一些實驗和練習,需要建立一些臨時檔案,應該儲存在哪裡呢?

答案是使用者的主目錄或 /tmp/ 臨時目錄。但是要小心有些目錄中不能直接修改和儲存資料,比如 /proc/fn/sys/ 目錄,因為它們是儲存在記憶體中的,如果在這裡寫入資料,那麼你的記憶體會越來越小,直至當機;/boot/ 目錄也不能儲存額外資料,因為 /boot/ 目錄會單獨分割槽作為啟動分割槽,如果沒有空閒空間,則會導致系統不能正常啟動。

總之,Linux 要在合理的目錄下進行操作和修改。

相關文章