因爲利用Linux來開發產品的團隊和我的實在太多了,想象一下,若是每一個人都以本身的想法來配置文件放置的目錄,那麼管理上將會很是的困擾。爲控制解決Linux文件目錄配置極其混亂的局面,Linux目錄配置標準FHS(Filesystem Hierarchy Standard)就這樣出爐了,FHS的重點就在於規範每一個特定的目錄下應該放什麼樣的數據。這樣就大大方便了獨立的軟件開發商、操做系統製做者及系統維護人員。mysql
FHS針對目錄樹架構定義出三層目錄下應該放置什麼樣的數據,三層目錄分別是:linux
一、/(root, 根目錄): 與開機系統有關;sql
二、/usr(UNIX software resource):與軟件安裝/執行有關數據庫
三、/var (variable):與系統運做過程有關緩存
一、 根目錄(/)的意義與內容bash
根目錄與開機、還原、系統修復等操做有關。FHS標準建議:根目錄(/)所在分區應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好,如此不但性能較好,根目錄所在的文件系統也較不容易發生問題。服務器
FHS定義出根目錄(/)下面應該要有下面這些子目錄的存在:網絡
目錄架構 |
應放置文件內容函數 |
/bin |
系統有不少放置執行文件的目錄,但/bin比較特殊。由於/bin放置的是在單用戶維護模式下還可以被操做的命令。在/bin下面的命令能夠被root與通常帳戶所使用,主要有cat,chmod,chown,date,mv,mkdir, cp,bash等經常使用的命令。 |
/boot |
這個目錄主要放置開機會使用到的文件,包括Linux內核文件以及開機菜單與開機所須要配置文件等。LINUX kernel經常使用的文件名爲vmlinuz,若是使用的是grub這個引導裝載程序,則還會存在/boot/grub/這個目錄 |
/dev |
在Linux系統上, 任何設備與接口設備都是以文件的形式存在於這個目錄當中的。你只要經過訪問這個目錄下面的某個文件,就等於訪問某個設備。比較重要的文件有/dev/null, /dev/zero,/dev/tty,/dev/lp*, /dev/hd*, /dev/sd*等 |
/etc |
系統主要的配置文件幾乎都放置在這個目錄內, 例如人員的帳號密碼文件、各類服務的起始文件等。通常來講,這個目錄下的各文件屬性是可讓通常用戶查閱的,可是隻有root有權利修改。FHS建議不要放置可執行文件(binary)在這個目錄中。比較重要的文件有etc/inittab, /etc/init.d, /etc/modprobe.conf, /etc/X11, /etc/fstab, /etc/sysconfig等,另外,其下重要的目錄有: a. /etc/init.d/: 全部服務的默認啓動腳本都是放在這裏的,例如要啓動或者關閉 iptables的話: 「/etc/init.d/iptables start」 、 "/etc/init.d/iptables stop" b. /etc/xinetd.d/: 這就是所謂的super daemon 管理的各項服務的配置文件目錄 c. /etc/X11/: 與X Window有關的各類配置文件都在這裏, 尤爲是xorg.conf 這個XServer的配置文件 |
/home |
這是系統默認的用戶主文件夾(home directory),在你建立一個通常用戶帳號時,默認的用戶主文件夾都會規範到這裏來。比較重要的是,主文件夾有兩種代號: ~: 表明當前登陸用戶的主文件夾 ~dmtsai: 則表明dmtsai的主文件夾 |
/lib |
系統的函數庫很是多, 而/lib放置的則是在開機時會用到的函數庫,以及在/bin或/sbin下面的命令會調用的函數庫而已。什麼是函數庫? 你能夠將它想成是「外掛」,某些命令必需要有這些「外掛」纔可以順利完成程序的執行之意。尤爲重要的是/lib/modules/這個目錄,由於該目錄會放置內核相關的模塊(驅動程序) |
/media |
/media放置的就是可刪除的設備。包括軟盤、光盤、DVD等設備都暫時掛載於此。常見的文件名有/media/floppy, /media/cdrom等 |
/mnt |
若是你想要暫時掛載某些額外的設備,通常建議你能夠放置到這個目錄中。在比較早的時候,這個目錄的用途與/media相同。只是有了/media以後,這個目錄就用來暫時掛載用了 |
/opt |
第三方軟件放置的目錄 |
/root |
系統管理員(root)的主文件夾。之因此放在這裏,是由於若是進入單用戶維護模式而僅掛載根目錄時,該目錄就可以擁有root的主文件夾,因此咱們會但願root的主文件夾與根目錄放置在同一個分區中 |
/sbin |
Linux有很是多的命令是用來設置系統環境的,這些命令只有root纔可以利用來「設置」系統,其餘用戶最多隻能用來「查詢」而已。放在/sbin下面的爲開機過程當中所須要的,裏面包括了開機、修復、還原系統所須要的命令。至於某些服務器軟件程序,通常則放置到/usr/sbin/當中。至於本機自行安裝的軟件所產生的系統執行文件(systen binary), 則放置到/usr/local/sbin/當中了。常見的命令包括fdisk, fsck, ifconfig, init,mkfs等 |
/srv |
srv 能夠視爲「service」的縮寫,是一些網絡服務啓動以後,這些服務所須要取用的數據目錄。常見的服務例如www,FTP等,舉例來講,www服務須要的網頁數據就能夠放置在/srv/www/裏面 |
/tmp |
這是讓通常用戶或者正在執行的程序暫時放置文件的地方。這個目錄是任何人都可以訪問,因此你須要按期清理一下。固然,重要數據不可放置在此目錄。由於FHS甚至建議在開機時,應該要將/tmp下的數據都刪除 |
另外,像/lost+found、/proc、/sys這一類重要的目錄並不在FHS定義的標準以內,/lost+found目錄是使用標準的ext2/ext3文件系統格式纔會產生的一個目錄,目的在於當文件系統發生錯誤時,將一些丟失的片斷放置到這個目錄下;/proc、/sys屬於虛擬文件系統,數據都存內存中,不佔用磁盤空間。
注:開機過程當中,只要根目錄會被掛載,其餘分區則是在開機完成後纔會持續進行掛載,因此在根目錄下與開機相關的目錄(包括/etc、/bin、/dev、/lib、/sbin)都不能與根目錄放到不一樣的分區中,不然你會遇到千奇百怪的報錯。
二、 /usr 的意義與內容
依據FHS的基本定義,/usr裏面放置的數據屬於可分享的與不可變更的, usr是UNIX Software Resource的縮寫,也就是「UNIX 操做系統軟件資源」所放置的目錄,而不是用戶的數據。全部系統默認的軟件(distribution 發佈者提供的軟件)都會放置到/usr下面。系統剛安裝完畢時,這個目錄會佔用最多的磁盤容量。
目錄 |
應放置文件內容 |
/usr/X11R6 |
爲X Window系統重要數據所放置的目錄,之因此取名爲X11R6是由於最後的X版本爲第11版,且該版的第6次釋出之意 |
/usr/bin/ |
絕大部分的用戶可以使用命令都放在這裏。請注意到它與/bin的不一樣之處(是否與開機過程有關) |
/usr/include |
C/C++等程序語言的頭文件(header)與包含文件(include)放置處,當咱們以tarball方式(*.tar.gz的方式安裝軟件)安裝某些數據時,會使用到裏頭的許多包含文件 |
/usr/lib |
包含各應用軟件的函數庫、目標文件(Object file), 以及不被通常用戶慣用的執行文件或腳本(script)。某些軟件會提供會提供一些特殊的命令來進行服務器的設置,這些命令也不會常常被系統管理員操做,那就會被擺放到這個目錄下。要注意的是, 若是你使用的是X86—64的Linux系統,那可能會有/usr/lib64目錄產生 |
/usr/local |
系統管理員在本機自行安裝本身下載的軟件(非distribution默認提供者), 建議安裝到此目錄,這樣會比較便於管理。/usr/local去,該目錄下也是具備bin,etc,include,lib的子目錄 |
/usr/sbin |
非系統正常運行所須要的系統命令。最多見的就是某些網絡服務器軟件的服務命令(daemon) |
/usr/share |
放置共享文件的地方,在這個目錄下放置的數據幾乎是不分硬件架構都可讀取的數據,由於幾乎都是文本文件。在此目錄下常見的還有這些子目錄: a. /usr/share/man: 再線幫助文件 b. /usr/share/doc: 軟件雜項的文件說明 c. /usr/share/zoneinfo: 與時區有關的時區文件 |
/usr/src |
通常源碼建議放置到這裏,至於內核源碼則建議放置到/usr/src/linux/目錄下 |
三、 /var 的意義與內容
若是/usr是安裝時會佔用較大硬盤容量的目錄,那麼/var就是在系統運行後纔會漸漸佔用硬盤容量的目錄。由於/var目錄主要針對常態性變更的文件, 包括緩存(cache)、登陸文件(log file)以及某些軟件運行所產生的文件,包括程序文件(lock file, run file), 或者例如MySQL數據庫文件等。。
目錄 |
應放置文件內容 |
/var/cache |
應用程序自己運行過程當中會產生的一些暫存文件 |
/var/lib |
程序自己執行的過程當中,須要使用到的數據文件放置的目錄。在此目錄下各自的軟件應該要有各自的目錄。舉例來講,MySQL的數據庫放置到/var/lib/mysql/, 而rpm的數據庫則放到/var/lib/rpm目錄下 |
/var/lock |
某些設備或者是文件資源一次只能被一個應用程序所用,若是同時有兩個程序使用該設備時,就可能產生一些錯誤的情況,所以就得要將該設備上鎖(lock),以確保該設備只會給單一軟件所使用 |
/var/log |
這是系統日誌目錄。裏面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登陸者的信息)等 |
/var/mail |
放置我的電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中。一般這兩個目錄是互爲鏈接文件 |
/var/run |
某些程序或者服務啓動後,會將他們的PID放置在這個目錄下 |
/var/spool |
這個目錄一般放置一些隊列數據,所謂的「隊列」就是排隊等待其餘程序使用的數據,這些數據被使用後一般都會被刪除。舉例來講,系統收到新新件會放置到/var/spool/mail中,但用戶收下該信件後該信件原則上會被刪除。信件若是暫時寄不出去會被放到/var/spool/mqueue中,等到被送出去後就被刪除 |
關於linux目錄結構配置標準就介紹到這裏啦,有興趣的童鞋能夠挑戰FHS官方英文文檔