1. 程式人生 > >Linux文件系統的目錄結構詳解

Linux文件系統的目錄結構詳解

rehat 可變 樹形 ESS 頁面 允許 運行時 office clas

一、前 言

文章對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服務器站點存放目錄;/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文件目錄結構

1、樹狀目錄結構圖

技術分享圖片

2、/目錄

目錄

描述

/

第一層次結構的根、整個文件系統層次結構的根目錄。

/bin/

需要在單用戶模式可用的必要命令(可執行文件);面向所有用戶,例如:cat、ls、cp,和/usr/bin類似。

/boot/

引導程序文件,例如:kernel、initrd;時常是一個單獨的分區[6]

/dev/

必要設備, 例如:, /dev/null.

/etc/

特定主機,系統範圍內的配置文件。

關於這個名稱目前有爭議。在貝爾實驗室關於UNIX實現文檔的早期版本中,/etc 被稱為/etcetra 目錄,[7]這是由於過去此目錄中存放所有不屬於別處的所有東西(然而,FHS限制/etc存放靜態配置文件,不能包含二進制文件)。[8]自從早期文檔出版以來,目錄名稱已被以各種方式重新稱呼。最近的解釋包括反向縮略語如:"可編輯的文本配置"(英文 "Editable Text Configuration")或"擴展工具箱"(英文 "Extended Tool Chest")。[9]

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系統(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/home/

用戶的家目錄,包含保存的文件、個人設置等,一般為單獨的分區。

/lib/

/bin/ and /sbin/中二進制文件必要的庫文件。

/media/

可移除媒體(如CD-ROM)的掛載點 (在FHS-2.3中出現)。

/lost+found

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

/mnt/

臨時掛載的文件系統。比如cdrom,u盤等,直接插入光驅無法使用,要先掛載後使用

/opt/

可選應用軟件包。

/proc/

虛擬文件系統,將內核與進程狀態歸檔為文本文件(系統信息都存放這目錄下)。例如:uptime、 network。在Linux中,對應Procfs格式掛載。該目錄下文件只能看不能改(包括root)

/root/

超級用戶的家目錄

/sbin/

必要的系統二進制文件,例如: init、 ip、 mount。sbin目錄下的命令,普通用戶都執行不了。

/srv/

站點的具體數據,由系統提供。

/tmp/

臨時文件(參見 /var/tmp),在系統重啟時目錄中文件不會被保留。

/usr/

默認軟件都會存於該目錄下。用於存儲只讀用戶數據的第二層次;包含絕大多數的(多)用戶工具和應用程序。

/var/

變量文件——在正常運行的系統中其內容不斷變化的文件,如日誌,脫機文件和臨時電子郵件文件。有時是一個單獨的分區。如果不單獨分區,有可能會把整個分區充滿。如果單獨分區,給大給小都不合適。

3/etc/目錄

特定主機系統範圍內的配置文件。

目錄

描述

/etc/rc /etc/rc.d

/etc/rc*.d

啟動、或改變運行級時運行的scripts或scripts的目錄.

/etc/hosts

本地域名解析文件

/etc/sysconfig/network

IP、掩碼、網關、主機名配置

/etc/resolv.conf

DNS服務器配置

/etc/fstab

開機自動掛載系統,所有分區開機都會自動掛載

/etc/inittab

設定系統啟動時Init進程將把系統設置成什麽樣的runlevel及加載相關的啟動文件配置

/etc/exports

設置NFS系統用的配置文件路徑

/etc/init.d

這個目錄來存放系統啟動腳本

/etc/profile, /etc/csh.login, /etc/csh.cshrc

全局系統環境配置變量

/etc/issue

認證前的輸出信息,默認輸出版本內核信息

/etc/motd

設置認證後的輸出信息,

/etc/mtab

當前安裝的文件系統列表.由scripts初始化,並由mount 命令自動更新.需要一個當前安裝的文件系統的列表時使用,例如df 命令

/etc/group

類似/etc/passwd ,但說明的不是用戶而是組.

/etc/passwd

用戶數據庫,其中的域給出了用戶名、真實姓名、家目錄、加密的口令和用戶的其他信息.

/etc/shadow

在安裝了影子口令軟件的系統上的影子口令文件.影子口令文件將/etc/passwd 文件中的加密口令移動到/etc/shadow 中,而後者只對root可讀.這使破譯口令更困難.

/etc/sudoers

可以sudo命令的配置文件

/etc/syslog.conf

系統日誌參數配置

/etc/login.defs

設置用戶帳號限制的文件

/etc/securetty

確認安全終端,即哪個終端允許root登錄.一般只列出虛擬控制臺,這樣就不可能(至少很困難)通過modem或網絡闖入系統並得到超級用戶特權.

/etc/printcap

類似/etc/termcap ,但針對打印機.語法不同.

/etc/shells

列出可信任的shell.chsh 命令允許用戶在本文件指定範圍內改變登錄shell.提供一臺機器FTP服務的服務進程ftpd 檢查用戶shell是否列在 /etc/shells 文件中,如果不是將不允許該用戶登錄.

/etc/xinetd.d

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

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系統(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/etc/skel/

默認創建用戶時,把該目錄拷貝到家目錄下

4/usr/目錄

默認軟件都會存於該目錄下。用於存儲只讀用戶數據的第二層次;包含絕大多數的用戶工具和應用程序。

目錄

描述

/usr/X11R6

存放X-Windows的目錄;

/usr/games

存放著XteamLinux自帶的小遊戲;

/usr/doc

Linux技術文檔;

/usr/include

用來存放Linux下開發和編譯應用程序所需要的頭文件;

/usr/lib

存放一些常用的動態鏈接共享庫和靜態檔案庫;

/usr/man

幫助文檔所在的目錄;

/usr/src

Linux開放的源代碼,就存在這個目錄,愛好者們別放過哦;

/usr/bin/

非必要可執行文件 (在單用戶模式中不需要);面向所有用戶。

/usr/lib/

/usr/bin/和/usr/sbin/中二進制文件的庫。

/usr/sbin/

非必要的系統二進制文件,例如:大量網絡服務的守護進程。

/usr/share/

體系結構無關(共享)數據。

/usr/src/

源代碼,例如:內核源代碼及其頭文件。

/usr/X11R6/

X Window系統版本 11, Release 6.

/usr/local/

本地數據的第三層次,具體到本臺主機。通常而言有進一步的子目錄,例如:bin/、lib/、share/.這是提供給一般用戶的/usr目錄,在這裏安裝一般的應用軟件;

5/var/目錄

/var 包括系統一般運行時要改變的數據.每個系統是特定的,即不通過網絡與其他計算機共享.

目錄

描述

/var/log/message

日誌信息,按周自動輪詢

/var/spool/cron/root

定時器配置文件目錄,默認按用戶命名

/var/log/secure

記錄登陸系統存取信息的文件,不管認證成功還是認證失敗都會記錄

/var/log/wtmp

記錄登陸者信息的文件,last,who,w命令信息來源於此

/var/spool/clientmqueue/

當郵件服務未開啟時,所有應發給系統管理員的郵件都將堆放在此

/var/spool/mail/

郵件目錄

/var/tmp

比/tmp 允許的大或需要存在較長時間的臨時文件. (雖然系統管理員可能不允許/var/tmp 有很舊的文件.)

/var/lib

系統正常運行時要改變的文件.

/var/local

/usr/local 中安裝的程序的可變數據(即系統管理員安裝的程序).註意,如果必要,即使本地安裝的程序也會使用其他/var 目錄,例如/var/lock .

/var/lock

鎖定文件.許多程序遵循在/var/lock 中產生一個鎖定文件的約定,以支持他們正在使用某個特定的設備或文件.其他程序註意到這個鎖定文件,將不試圖使用這個設備或文件.

/var/log/

各種程序的Log文件,特別是login (/var/log/wtmp log所有到系統的登錄和註銷) 和syslog (/var/log/messages 裏存儲所有核心和系統程序信息. /var/log 裏的文件經常不確定地增長,應該定期清除.

/var/run

保存到下次引導前有效的關於系統的信息文件.例如, /var/run/utmp 包含當前登錄的用戶的信息.

/var/cache/

應用程序緩存數據。這些數據是在本地生成的一個耗時的I/O或計算結果。應用程序必須能夠再生或恢復數據。緩存的文件可以被刪除而不導致數據丟失。

6/proc/目錄

虛擬文件系統,將內核與進程狀態歸檔為文本文件(系統信息都存放這目錄下)。

例如:uptime、 network。在Linux中,對應Procfs格式掛載。該目錄下文件只能看不能改(包括root)

目錄

描述

/proc/meminfo

查看內存信息

/proc/loadavg

還記得 top 以及 uptime 吧?沒錯!上頭的三個平均數值就是記錄在此!

/proc/uptime

就是用 uptime 的時候,會出現的資訊啦!

/proc/cpuinfo

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

/proc/cmdline

加載 kernel 時所下達的相關參數!查閱此文件,可了解系統是如何啟動的!

/proc/filesystems

目前系統已經加載的文件系統羅!

/proc/interrupts

目前系統上面的 IRQ 分配狀態。

/proc/ioports

目前系統上面各個裝置所配置的 I/O 位址。

/proc/kcore

這個就是內存的大小啦!好大對吧!但是不要讀他啦!

/proc/modules

目前我們的 Linux 已經加載的模塊列表,也可以想成是驅動程序啦!

/proc/mounts

系統已經掛載的數據,就是用 mount 這個命令呼叫出來的數據啦!

/proc/swaps

到底系統掛加載的內存在哪裏?呵呵!使用掉的 partition 就記錄在此啦!

/proc/partitions

使用 fdisk -l 會出現目前所有的 partition 吧?在這個文件當中也有紀錄喔!

/proc/pci

在 PCI 匯流排上面,每個裝置的詳細情況!可用 lspci 來查閱!

/proc/version

核心的版本,就是用 uname -a 顯示的內容啦!

/proc/bus/*

一些匯流排的裝置,還有 U盤的裝置也記錄在此喔!

7/dev/目錄

設備文件分為兩種:塊設備文件(b)和字符設備文件(c)
設備文件一般存放在/dev目錄下,

對常見設備文件作如下說明:

目錄

描述

/dev/hd[a-t]

IDE設備

/dev/sd[a-z]

SCSI設備

/dev/fd[0-7]

標準軟驅

/dev/md[0-31]

軟raid設備

/dev/loop[0-7]

本地回環設備

/dev/ram[0-15]

內存

/dev/null

無限數據接收設備,相當於黑洞

/dev/zero

無限零資源

/dev/tty[0-63]

虛擬終端

/dev/ttyS[0-3]

串口

/dev/lp[0-3]

並口

/dev/console

控制臺

/dev/fb[0-31]

framebuffer

/dev/cdrom

=> /dev/hdc

/dev/modem

=> /dev/ttyS[0-9]

/dev/pilot

=> /dev/ttyS[0-9]

/dev/random

隨機數設備

/dev/urandom

隨機數設備

博文來自:https://www.cnblogs.com/cyjaysun/p/4462325.html

Linux文件系統的目錄結構詳解