目錄樹概述
發表于:2007-07-04來源:作者:點擊數:
標簽:
這篇可夠全的! FSSTND 文件系統標準的標準 Linux 目錄樹的重要部分。略述了針對不同的目的將目錄樹分割成獨立的(分離的)文件系統的常用方法并且給出了詳細分割的動機。對分割的其它方法也進行了討論。 背景 這一章松散地基于 本章并沒有 本章并沒有詳細解
這篇可夠全的!
FSSTND文件系統標準的標準Linux目錄樹的重要部分。略述了針對不同的目的將目錄樹分割成獨立的(分離的)文件系統的常用方法并且給出了詳細分割的動機。對分割的其它方法也進行了討論。背景
這一章松散地基于
本章并沒有
本章并沒有詳細解釋所有的文件。目的不是描述每一個文件,而是從文件系統的觀點給出一個系統概述。對于每個文件的更多的信息參見本手冊的別的章節或
整個目錄樹是可以分割成更小的部分,每一部分可放在它自己的磁盤上或分區內,以利于適合磁盤大小的限制以及利于備份和其它一些系統管理。主要的目錄部分有
圖
javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">
目錄樹不同部分的規則的描述如下。
。對于每臺機器來說,根(
。
。
。
盡管上面將不同部分都稱為文件系統,并不需要它們實質上是在分離的文件系統上。它們可以容易地被放置進一單個的文件系統中如果系統是一個小的單用戶系統并且用戶想使得事情簡單化。目錄樹也可以以不同的方式劃分成文件系統,這依賴于磁盤有多大,以及對于各種目的空間是如何分配的。然而,重要的部分是按照標準來命名;盡管我們可以把
Unix
Linux文件系統標準,FSSTND,版本1.2(見參考書目),它試圖對如何在Linux系統中組織目錄樹設置一個標準。這樣一個標準是有好處的,這將更容易地為Linux寫出或移植軟件,并且管理Linux機器,因為每件事都在它通常的地方。在這標準之后并沒有權威來迫使每個人去遵守它,但是它以得到了絕大多數Linux發行的支持,如果不是所有的話。沒有充分的理由而不遵守FSSTND并不是一個好主意。FSSTND試圖遵守UNIX傳統以及當前的趨勢,使得Linux系統對于有著其它UNIX系統經驗的人也是熟悉的,反之也然。FSSTND來的更詳細。一個系統管理員也應該通讀FSSTND以期有完整的理解。manual pages。root、/usr、/var以及/home文件系統(見圖3-1)。每個部分有不同的目的。目錄樹被設計成能夠在Linux機器的網絡中很好的工作,這些Linux機器可以在一個只讀的設備上共享文件系統的某些部分(例如,一個CD-ROM),或在一個NFS的網絡上。3-1. 一個Unix目錄樹的部分。虛線指示出分區的限制。root)文件系統是確定的(它通常是存儲于一個本地磁盤上,盡管它可以是一個內存虛擬盤或是個網絡驅動器)并且包含有引導系統啟動以及將系統引導至一個能夠加栽其它文件系統的狀態所必需的文件。此時,根(root)文件系統的內容對于單用戶狀態已經足夠。它也將含有用于修復壞系統的工具,以及從備份中恢復丟失的文件的工具。/usr文件系統包含所有的命令、庫文件、manual pages以及正常操作時所需的其他一些非改變文件。/usr中所有的文件都應該是通用的而非特定地用于某臺給定的機器。在正常操作中,所有的文件均不能被改變。這使得這些文件能夠在網絡上共享,這樣就能夠做到節約磁盤空間而有成本效益(/usr中文件通常要占用幾百兆的空間),并且能夠更容易地管理(僅僅主 /usr在升級一個應用程序是需要改變,而非各臺機器)。甚至如果文件系統是在一個本地磁盤上,它可以以只讀方式加載上來,以減少在系統崩潰時文件系統的毀壞的機會。/var文件系統包含有會改變的文件,如spool目錄(用于mail、news、printers等等)、log文件、格式化的manual pages以及臨時文件。傳統上,/var內的任何東西都可以從/usr中找到,但那樣的話,就不可能將/usr以只讀方式加載了。/home文件系統包含用戶的主目錄,也即,系統上的所有實際數據。分離home目錄到它自己的目錄樹或文件系統使得備份更容易;而其它部分常不必備份,或者說不常備份(它們很少改變的)。一個大的/home也可以分割成幾個文件系統,這需要在/home下加上一個額外的命名層,例如,/home/students以及/home/staff。/var和/usr放在同一個分區上,/usr/lib/libc.a和/var/log/messages的命名必須可以工作,例如通過移動/var到/usr/var,并且作一個從/var到/usr/var的符號連接。系統文件結構以目的的不同來組合(groups)文件,也即,所有的命令都在一個地方,所有的數據文件在另一個地方,所有的文檔在第三個地方,以次類推。另一種方法是根據文件所屬程序來組合文件,也即,所有Emacs文件都將存于一個目錄中,所有TeX存于另一個目錄,依次類推。第二種方法所帶來的問題是難于共享文件(程序目錄常常包含有靜態的、共享的、會改變的以及非共享的文件),并且有時甚至難于找到文件(例如,manual pages分散于許多地方,使得manual page程序尋找這些文件變成了維護上的噩夢)。根(
根文件系統一般應設置的小一些,因為它包含著重要的文件并且小一些的、不常修改的文件系統就有一個更好的機會不被毀壞掉。一個毀壞的根文件系統通常意味著系統將不能啟動了,除非使用特殊方法(例如,從軟盤啟動),所以你不會去冒這個險的。
根目錄通常不包含任何其他文件,除了可能會有些系統的標準啟動引導用的影像文件,常稱為
root)文件系統/vmlinuz。所有其它文件都在根文件系統的子目錄中:/bin
在啟動引導期間所需的命令,也可以被普通用戶使用(大概在啟動引導以后)。
/sbin
如同
/bin,但該目錄中的命令不是給普通用戶使用的,盡管他們在需要和允許時可能可以使用。/etc
該目錄中存儲了與機器有關的配置文件。
/root
用戶
root的主目錄。/lib
根文件系統中的程序所需的共享庫文件。
/lib/modules
可加載的內核模塊,尤其是那些當從災難中恢復啟動引導系統時所需的模塊文件(例如,網絡以及文件系統驅動程序)。
/dev
設備文件。/tmp
臨時文件。啟動后程序運行時應使用
/var/tmp,而非/tmp,因為前者可能在有更大的空間的磁盤上。/boot
用于系統啟動引導加載程序。例如,
LILO。內核影像文件常常是放置在此的,而不是直接放在根目錄下。如果有許多內核影像文件,該目錄很容易變得很大,因此此時將其置于一個分離獨立的文件系統更好些。另一個理由就是要確保內核影像文件被存于IDE磁盤的1024柱面以內。/mnt
系統管理員為臨時加載的加載點。程序不會自動地加載到
/mnt的。/mnt可以再劃分成子目錄(例如,/mnt/dosa可以是使用MS-DOS文件系統的軟驅,/mnt/exta可以是一個ext2文件系統)。/proc
其它文件系統的加載點。
,/usr,/var,/home/etc
/etc
目錄目錄包含有許多的文件。有些文件將在下面給予討論。對于其他一些文件,你應該確定它們是屬于哪個程序的并且閱讀所屬程序的manual page。許多網絡配置文件也包含于/etc目錄中,它們在網絡管理員手冊中給予了討論。/etc/rc
在系統啟動時或當改變了運行層時所要運行的描述(
/etc/passwd
用戶數據庫,所含的域有用戶名、實際名稱、該用戶主目錄、加密過的口令以及有關各個用戶的其它一些信息。該文件的格式在
或 /etc/rc.d 或 /etc/rc?.dscripts)文件或者是描述文件的目錄。更多信息請參見有關init的章節。/man manual page中有記載。/etc/fdprm
軟盤參數表。描述了不同軟盤的格式樣式。由
setfdprm程序使用。有關信息請參閱setfdprm的manual page。/etc/fstab
列出了在系統啟動時由
mount –a命令自動加載的文件系統(在/etc/rc或者同等的啟動文件中)。在Linux中,該文件也包含由swapon –a自動使用的的交換區的信息。有關更詳細的信息,請參閱第四章中加載與卸載小節以及mount的manual page。/etc/group
與
/etc/passwd相類似,但描述了組的信息而非用戶信息。詳細信息請參見group的manual page。/etc/inittab
init
的配置文件。/etc/issue
getty
輸出的在login提示之前的信息。通常含有一小段敘述或是歡迎使用系統的消息。內容由系統管理員決定。/etc/magic
file
的配置文件。包含了基于file猜測出的文件類型的各種文件格式的描述。/etc/motd
當日消息,在成功登錄后將自動輸出(顯示)。其內容由系統管理員決定。常用于給所有用戶送信息,比如計劃中的關機時間警告消息。
/etc/mtab
當前加載的文件系統的列表。最初是由啟動引導描述文件所設置,并由
mount命令自動地更新。當需要一個已加載文件系統列表時被使用,例如,在df命令中使用。/etc/shadow
安裝了影子(
shadow)口令軟件的系統中的影子口令文件。影子口令將加密的口令從/etc/passwd中移入/etc/shadow中;后者只有root用戶才能讀取。這使得破解口令變的極其困難。/etc/login.defs
login
命令的配置文件。/etc/printcap
與
/etc/termcap相類似,但用于打印機。具有不同的語法。/etc/profile
Bourne
,/etc/csh.login,/etc/csh.cshrc或C shell在登錄或啟動時所執行的文件。系統管理員可以使用它為所有用戶設置全局設置值。對于各個shell參見各自的manual page。/etc/securetty
確定安全終端,也即,確定能以
root登錄的終端。典型地,只有虛擬終端被列入,因此從調制解調器或網絡侵入系統以獲得超級用戶的權限幾乎是不可能的事(至少是非常困難的)。/etc/shells
列出可信賴的
shell。Chsh命令允許用戶改變他們的登錄shell為shells中所列出的shell之一。一臺機器的提供FTP服務的服務器進程ftpd,將檢查用戶的shell是否在/etc/shells中被列出。除非用戶的shell被列出,否則系統將阻止該用戶的登錄。/etc/termcap
終端性能數據庫。描述了各種終端可被哪些“
/dev
/dev
/usr
/ usr
escape序列”所控制。取代那些直接輸出的只能工作于一種特殊牌子的終端上的逃逸序列(escape sequence)的程序已經寫出,該程序在/etc/termcap中查詢正確的序列來工作。其結果就是許多程序能夠在絕大多數的終端上使用。詳細信息參見termcap、curs_termcap以及terminfo的manual pages。 目錄目錄包含所有設備的特殊設備文件。設備文件是以特定規則命名的文件;它們在設備列表(見XXX)中進行了描述。設備文件是在系統安裝時創建的,以后是由/dev/MAKEDEV描述文件來創建。/dev/MAKEDEV.local是由系統管理員寫的描述文件,用以建立僅是本地的設備文件或連接文件(也即,那些不是標準MAKEDEV中的部分,如有些非標準設備驅動程序的設備文件)。 文件系統文件系統通常很大,因為所有的程序都安裝于此。/usr中的所有文件通常來自Linux發行版;本地安裝的程序以及其它程序都放在/usr/local下。這使得從發行的一個新版中更新系統成為可能,甚至完全更新至新版而無須再次安裝所有的程序。下面列出了/usr中的一些子目錄(有些不很重要的子目錄這里沒有列出,詳細信息參見FSSTND)。/usr/x11R6
X
窗口系統,所有文件。為了簡化X的開發與安裝,X的文件并沒有集成到系統的其余部分中去。在/usr/x11R6下有個目錄樹,與/usr下的相類似。/usr/X386
與
/usr/X11R6類似,但是是X11版本5。/usr/bin
幾乎所有的用戶命令。有些命令在
/bin或/usr/local/bin之中。/usr/sbin
系統管理命令,是根文件系統不需要的,例如,絕大多數的服務器程序。
/usr/man
隨機手冊(
,/usr/info,/usr/docmanual pages),GNU 信息文檔以及各種其它的文檔資料。/usr/include
C
編程語言的頭文件。為了一致性這本應位于/usr/lib之下,但是傳統的習慣勢力一直支持這樣的命名。/usr/lib
程序和子系統的不變數據文件,包括一些場所配置文件。名字
lib來源于library;最初的編程子程序庫是存于/usr/lib中。/usr/local
這個地方用于存放本地安裝的軟件和其它一些文件。
/var
/var
文件系統中包含著數據文件,當系統正常運行時,這些數據文件是變化的。對于每個系統來說它是特定的,也即,不能在網絡上與其它計算機共享這些數據文件。/var/catman
用于格式化過的
/var/lib
當系統正常運行時改動過的文件。
man pages的高速緩沖。Manual pages的原始資料通常是存放在/usr/man/man*中的;有些manual pages是以預格式化的版本形式給出的,存儲于/usr/man/chat*中。其它一些manual pages在第一次使用時需要進行格式化處理;格式化過的版本就被存于/var/man目錄中,因此下一個人閱讀同樣的page時就不用等待格式化過程了。(/var/catman的內容如同臨時目錄一樣常常被清理的。)/var/local
安裝于
/usr/local中的程序的可變的數據(也即,由系統管理員安裝的程序)。注意,即使是本地安裝的程序也應該使用/var的其它目錄,例如,/var/lock。/var/lock
上鎖文件(鎖定的文件)。許多程序遵循一個慣例,在
/var/lock目錄中建立上鎖文件,用以指出它們正在使用一個特殊的設備或文件。其它的程序將會注意到這一點并會避免再使用這個特殊的設備或文件。/var/log
各種程序的操作記錄文件,特別是
login(/var/log/wtmp,該文件中記錄了所有的對系統的登錄和退出)以及syslog(/var/log/messages,這里存儲了內核和系統程序所有的消息)。/var/log中的文件經常會變得很大,需要定期進行清理。/var/run
含有有關系統信息的文件,這些信息在系統下一次啟動之前一直有效。例如,
/var/run/utmp中含有當前登錄的人的信息。/var/spool
用于郵件、新聞、打印隊列以及其它排隊工作的目錄。每個不同的
spool在/var/spool下面都有自己的子目錄,例如,用戶郵件箱在/var/spool/mail之中。/var/tmp
大的臨時文件或者需要比在
/proc
/proc
/tmp中更長期存在的臨時文件。(盡管系統管理員可能不允許很陳舊的文件存在于/var/tmp中。) 文件系統文件系統是一個幻影文件系統,它在磁盤上并不存在。相反地,內核在內存中創建了它。它用于提供有關系統的信息(最初是關于處理器的,因此有了此名稱)。一些重要的文件和目錄在下面給出了說明。在manual page的proc中有更詳細的說明。/proc/1
是一個有關進程
1信息的目錄。每一個進程在/proc下面都有一個以其進程號為名稱的目錄。/proc/cpuinfo
有關處理器的信息,如它的類型、制造日期、型號以及性能。
/proc/devices
配置進當前運行內核的設備驅動程序的列表。
/proc/dma
顯示當前哪個
DMA通道正在被使用。/proc/filesystems
配置進內核的文件系統。
/proc/interrupts
顯示哪些中斷被使用以及它們使用了多少次。
/proc/ioports
顯示此時那些端口正被使用著。
/proc/kcore
是系統物理內存的一個映像。它的大小與你的物理內存完全一樣,但實際上并不真正占據那樣多的內存;他是在程序訪問它時瞬時產生的。(記?。撼悄銓⑵鋸椭频絼e的地方去,否則它在
/proc下不占用任何磁盤空間。)/proc/kmsg
內核輸出的消息。這些消息同樣也被送到了
syslog中。/proc/ksyms
內核的符號表。
/proc/loadavg
系統的“平均負荷”;是三個毫無意義的指示值,指示出此時系統有多少工作要做。
/proc/meminfo
物理內存和交換區使用情況的信息。
/proc/modules
此時哪些內核模塊被加載。/proc/net
網絡協議的狀態信息。
/proc/self
一個進程目錄的符號連接,該進程屬于在
/proc中查看信息的程序的。當兩個進程在觀察/proc時,它們取得不同的連接。這主要是為了方便程序觀察它們自己的進程目錄。/proc/stat
有關系統的靜態參數,如系統自啟動以來的頁故障(
page faults)數。/proc/uptime
系統啟動的時間。
/proc/version
內核版本。
可以注意到,雖然以上文件基本上是易讀的文本文件,這些文件的格式有時可能還是難于理解。有許多命令就只是讀入上述文件并格式化成利于理解的格式。例如,
free程序讀入/proc/meminfo信息并將字節數轉換成千字節(同時也加入了少量的信息)。
本章描述了基于
原文轉自:http://www.kjueaiud.com