【轉】 Linux 的目錄詳解 (Linux基礎一)

 

前言

轉自: http://c.biancheng.net/view/2833.html 進行了一些提煉和修改。html

學習 Linux,不只限於學習各類命令,瞭解整個 Linux 文件系統的目錄結構以及各個目錄的功能一樣相當重要。

使用 Linux 時,經過命令行輸入 ls -l / 能夠看到,在 Linux 根目錄(/)下包含不少的子目錄(稱爲一級目錄),例如 bin、boot、dev 等。同時,各一級目錄下還含有不少子目錄(稱爲二級目錄),好比 /bin/bash、/bin/ed 等。Linux 文件系統目錄整體呈現樹形結構,/ 根目錄就至關於樹根。

因爲 Linux 系統免費開源,使得 Linux 發行版本有不少,利用 Linux 開發產品的團隊也有不少,若是任由每一個人都按照本身的想法來配置 Linux 系統文件目錄,後期可能會產生諸多的管理問題。試想,若是你進入一家公司,所用 Linux 系統的文件目錄結構與所學的徹底不一樣,實在使人頭疼。

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

FHS(Filesystem Hierarchy Standard),文件系統層次化標準,該標準規定了 Linux 系統中全部一級目錄以及部分二級目錄(/usr 和 /var)的用途。發佈此標準的主要目的就是爲了讓用戶清楚地瞭解每一個目錄應該存放什麼類型的文件。linux

Linux 根目錄(/)

FHS 認爲,Linux 系統的根目錄(/)最爲重要(沒有之一),其緣由有如下 2 點:sql

  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 所示的這些子目錄。

bash

表 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 系統中,文件和目錄的命名規則以下:編程語言

  1. 除了字符「/」以外,全部的字符均可以使用,可是要注意,在目錄名或文件名中,使用某些特殊字符並非明智之舉。例如,在命名時應避免使用 <、>、?、* 和非打印字符等。若是一個文件名中包含了特殊字符,例如空格,那麼在訪問這個文件時就須要使用引號將文件名括起來
  2. 目錄名或文件名的長度不能超過 255 個字符。
  3. 目錄名或文件名是區分大小寫的。如 DOG、dog、Dog 和 DOg ,是互不相同的目錄名或文件名,但使用字符大小寫來區分不一樣的文件或目錄,也是不明智的。
  4. 與 Windows 操做系統不一樣,文件的擴展名對 Linux 操做系統沒有特殊的含義,換句話說,Linux 系統並不以文件的擴展名開分區文件類型。例如,dog.exe 只是一個文件,其擴展名 .exe 並不表明此文件就必定是可執行文件。

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

相關文章
相關標籤/搜索