Monday, May 27, 2019

完美解讀Linux中文件系統的目錄結構

一、前 言

接觸Linux也有一段時間了,不過這幾天在編譯開源程序時,才發現自己對 linux文件系統的目錄結構了解的不夠透徹,很多重要目錄都說不清楚是用來幹嘛的,於是在網上百度了一下這方面的介紹,根據自己的使用習慣,整理出來一篇關於Linux文件系統的目錄結構的文章,和大家一起分享。

文章對Linux下所有目錄一一說明,對比較重要的目錄加以重點解說,以幫助初學者熟練掌握Linux的目錄結構。同時文章最後附錄了一份Linux目錄結構的簡明手冊,以便大家查閱。

二、目 錄

1、什麼是文件系統

2、文件系統的類型

3、目錄結構的詳細解讀

4、一些重要子目錄的解讀

5、附錄:目錄結構的簡明查閱手冊

三、正 文

我想,不光是我,對於每一個Linux學習者來說,了解Linux文件系統的目錄結構,是學好Linux的至關重要的一步。下面大家跟飄揚一起來學習吧………….

1、什麼是文件系統

當您使用Linux的時候,如果您通過ls –l / 就會發現,在/下包涵很多的目錄,比如etc、usr、var、bin … … 等目錄,而在這些目錄中,我們進去看看,發現也有很多的目錄或文件。文件系統在Linux下看上去就象樹形結構,所以我們可以把文件系統的結構形象的稱為樹形結構。

linux文件系統的最頂端是/,我們稱/為Linux的root,也就是 Linux操作系統的文件系統。Linux的文件系統的入口就是/,所有的目錄、文件、設備都在/之下,/就是Linux文件系統的組織者,也是最上級的領導者。

2、文件系統的類型

LINUX有四種基本文件系統類型:普通文件、目錄文件、連接文件和特殊文件,可用 file命令來識別。

普通文件:如文本文件、C語言元代碼、SHELL腳本、二進制的可執行文件等,可用 cat、less、more、vi、emacs來察看內容,用mv來改名。

目錄文件:包括文件名、子目錄名及其指針。它是LINUX儲存文件名的唯一地方,可用ls列出目錄文件。

連接文件:是指向同一索引節點的那些目錄條目。用ls來查看是,連接文件的標誌用l 開頭,而文件面後以”->”指向所連接的文件。

特殊文件:LINUX的一些設備如磁盤、終端、打印機等都在文件系統中表示出來,則一類文件就是特殊文件,常放在/dev目錄內。例如,軟驅A稱為/dev/fd0。LINUX無C:的概念,而是用/dev/had來自第一硬盤。

3、目錄結構的詳細解說

文件系統的組織結構分析,我們能分析什麼呢?也就是當我們列/目錄時,所看到的 /usr、/etc … … /var 等目錄是做什麼用的,這些目錄是不是有些特定的用途。無論哪個哪個版本的Linux系統,都有這些目錄,這些目錄應該是標準的。當然各個Linux發行版本也會存在一些小小的差異,但總體來說,大體還是差不多。

言歸正傳,下面飄揚將講到本文最核心的部分:linux文件系統的目錄結構。

/ bLinux文件系統的入口,也是處於最高一級的目錄;

/bin 系統所需要的那些命令位於此目錄,比如 ls、cp、mkdir等命令;功能和/usr/bin類似,這個目錄中的文件都是可執行的、普通用戶都可以使用的命令。作為基礎系統所需要的最基礎的命令就是放在這裡。

/boot Linux的內核及引導系統程序所需要的文件目錄,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;

/dev 設備文件存儲目錄,比如聲卡、磁盤… …

/etc 系統配置文件的所在地,一些服務器的配置文件也在這裡;比如用戶帳號及密碼配置文件;

/home 普通用戶家目錄默認存放目錄;

/lib 庫文件存放目錄

/lost+found 在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這裡。當系統啟動的過程中fsck工具會檢查這裡,並修復已經損壞的文件系統。 有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修復,或移到文件到原來的位置上。

/mnt 這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom 等目錄。可以參看/etc/fstab的定義。有時我們可以把讓系統開機自動掛載文件系統,把掛載點放在這裡也是可以的。主要看/etc/fstab中怎麼定義了;比如光驅可以掛載到/mnt/cdrom 。

/opt 表示的是可選擇的意思,有些軟件包也會被安裝在這裡,也就是自定義軟件包,比如在Fedora Core 5.0中,OpenOffice就是安裝在這裡。有些我們自己編譯的軟件包,就可以安裝在這個目錄中;通過源碼包安裝的軟件,可以通過 ./configure –prefix=/opt/目錄 。

/proc 操作系統運行時,進程信息及內核信息(比如cpu、硬盤分區、內存信息等)存放在這裡。/proc目錄偽裝的文件系統proc的掛載目錄,proc並不是真正的文件系統,它的定義可以參見 /etc/fstab 。

/root Linux超級權限用戶root的家目錄;

/sbin 大多是涉及系統管理的命令的存放,是超級權限用戶root的可執行命令存放地,普通用戶無權限執行這個目錄下的命令,這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目錄是相似的;我們記住就行了,凡是目錄sbin中包含的都是root權限才能執行的。

/tmp 臨時文件目錄,有時用戶運行程序的時候,會產生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。

/usr 這個是系統存放程序的目錄,比如命令、幫助文件等。這個目錄下有很多的文件和目錄。當我們安裝一個Linux發行版官方提供的軟件包時,大多安裝在這裡。如果有涉及服務器配置文件的,會把配置文件安裝在/etc目錄中。/usr目錄下包括涉及字體目錄/usr/share/fonts ,幫助目錄 /usr/share/man或/usr/share/doc,普通用戶可執行文件目錄/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超級權限用戶root的可執行命令存放目錄,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;還有程序的頭文件存放目錄/usr/include。

/var 這個目錄的內容是經常變動的,看名字就知道,我們可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。/var/www目錄是定義Apache/Web服務器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL數據庫的的存放地;

4、一些重要子目錄的解說

下面飄揚再補充幾個比較常見且很重要的目錄。

/etc/init.d 這個目錄是用來存放系統或服務器以System V模式啟動的腳本,這在以System V模式啟動或初始化的系統中常見。比如Fedora/RedHat;

/etc/xinit.d 如果服務器是通過xinetd模式運行的,它的腳本要放在這個目錄下。有些系統沒有這個目錄, 比如Slackware,有些老的版本也沒有。在Rehat/Fedora中比較新的版本中存在。

/etc/rc.d 這是Slackware發行版有的一個目錄,是BSD方式啟動腳本的存放地;比如定義網卡,服務器開啟腳本等。

/etc/X11 這是X-Windows相關的配置文件存放地。

/usr/bin 這個目錄是可執行程序的目錄,普通用戶就有權限執行;當我們從系統自帶的軟件包安裝一個程序時,他的可執行文件大多會放在這個目錄。比如安裝gaim軟件包時。相似的目錄是/usr/local/bin;有時/usr/bin中的文件是/usr/local/bin的鏈接文件;

/usr/sbin 這個目錄也是可執行程序的目錄,但大多存放涉及系統管理的命令。只有root權限才能執行;相似目錄是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等;

/usr/local 這個目錄一般是用來存放用戶自編譯安裝軟件的存放目錄;一般是通過源碼包安裝的軟件,如果沒有特別指定安裝目錄的話,一般是安裝在這個目錄中。這個目錄下面有子目錄。自己看看吧。

/usr/share 系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。

/usr/src 是內核源碼存放的目錄,比如下面有內核源碼目錄,比如 linux 、linux-2.xxx.xx 目錄等。有的系統也會把源碼軟件包安裝在這裡。比如Fedora/Redhat,當我們安裝file.src.rpm的時候,這些軟件包會安裝在 /usr/src/redhat相應的目錄中。

/var/adm 比如軟件包安裝信息、日誌、管理信息等,在Slackware操作系統中是有這個目錄的。在Fedora中好象沒有;自己看看吧。

/var/log 系統日誌存放,分析日誌要看這個目錄的東西;

/var/spool 打印機、郵件、代理服務器等假脫機目錄;

5、附錄:目錄結構的簡明查閱手冊

(1)“/”根目錄部分有以下子目錄:

/usr 目錄包含所有的命令、程序庫、文檔和其它文件。這些文件在正常操作中不會被改變的。這個目錄也包含你的Linux發行版本的主要的應用程序,譬如,Netscape。

/var 目錄包含在正常操作中被改變的文件:假脫機文件、記錄文件、加鎖文件、臨時文件和頁格式化文件等

/home 目錄包含用戶的文件:參數設置文件、個性化文件、文檔、數據、EMAIL、緩存數據等。這個目錄在系統省級時應該保留。

/proc 目錄整個包含虛幻的文件。它們實際上並不存在磁盤上,也不佔用任何空間。(用ls –l 可以顯示它們的大小)當查看這些文件時,實際上是在訪問存在內存中的信息,這些信息用於訪問系統

/bin 系統啟動時需要的執行文件(二進制),這些文件可以被普通用戶使用。

/sbin 系統執行文件(二進制),這些文件不打算被普通用戶使用。(普通用戶仍然可以使用它們,但要指定目錄。)

/etc 操作系統的配置文件目錄。

/root 系統管理員(也叫超級用戶或根用戶)的Home目錄。

/dev 設備文件目錄。LINUX下設備被當成文件,這樣一來硬件被抽象化,便於讀寫、網絡共享以及需要臨時裝載到文件系統中。正常情況下,設備會有一個獨立的子目 錄。這些設備的內容會出現在獨立的子目錄下。LINUX沒有所謂的驅動符。

/lib 根文件系統目錄下程序和核心模塊的共享庫。

/boot 用於自舉加載程序(LILO或GRUB)的文件。當計算機啟動時(如果有多個操作系統,有可能允許你選擇啟動哪一個操作系統),這些文件首先被裝載。這個目錄也會包含LINUX核(壓縮文件vmlinuz),但LINUX核也可以存在別處,只要配置LILO並且LILO知道LINUX核在哪兒。

/opt 可選的應用程序,譬如,REDHAT 5.2下的KDE (REDHAT 6.0下,KDE放在其它的XWINDOWS應用程序中,主執行程序在/usr/bin目錄下)

/tmp 臨時文件。該目錄會被自動清理乾淨。

/lost+found 在文件系統修復時恢復的文件

(2)“/usr”目錄下比較重要的部分有:

/usr/X11R6 X-WINDOWS系統(version 11, release 6)

/usr/X11 同/usr/X11R6 (/usr/X11R6的符號連接)

/usr/X11R6/bin 大量的小X-WINDOWS應用程序(也可能是一些在其它子目錄下大執行文件的符號連接)。

/usr/doc LINUX的文檔資料(在更新的系統中,這個目錄移到/usr/share/doc)。

/usr/share 獨立與你計算機結構的數據,譬如,字典中的詞。

/usr/bin和/usr/sbin 類似與“/”根目錄下對應的目錄(/bin和/sbin),但不用於基本的啟動(譬如,在緊急維護中)。大多數命令在這個目錄下。

/usr/local 本地管理員安裝的應用程序(也可能每個應用程序有單獨的子目錄)。在“main”安裝後,這個目錄可能是空的。這個目錄下的內容在重安裝或升級操作系統後應該存在。

/usr/local/bin 可能是用戶安裝的小的應用程序,和一些在/usr/local目錄下大應用程序的符號連接。

(3)“/proc”目錄的內容:

/proc/cpuinfo 關於處理器的信息,如類型、廠家、型號和性能等。

/proc/devices 當前運行內核所配置的所有設備清單。

/proc/dma 當前正在使用的DMA通道。/proc/filesystems 當前運行內核所配置的文件系統。

/proc/interrupts 正在使用的中斷,和曾經有多少個中斷。

/proc/ioports 當前正在使用的I/O端口。

四、後 記

本文是Linux文件系統的一個組成部分,對於一個系列文檔來說,還是必不可缺的。寫本文的目的如開頭已經敘說的一樣,是為了給Linux學習者提供一個關於Linux文件系統的目錄結構的參考手冊。如有不明之處,請聯繫飄揚,你可以到我的留言本http://www.piaoyang.org/guestbook 給我留言,我會儘力解答你的問題。以此拙作,希望能給大家帶去些微的幫助。(T002)

本文來源:賽迪網技術社區 作者:skid

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.