Linux 標(biāo)準(zhǔn)目錄結(jié)構(gòu) FHS
因為利用 Linux 來開發(fā)產(chǎn)品或 distribution的團隊實在太多了,如果每個人都用自己的想法來配置文件放置的目錄,那么將可能造成很多管理上的困擾。所以,后來就有了 Filesystem Hierarchy Standard(FHS)標(biāo)準(zhǔn)的出爐了。
根據(jù) FHS 的官方文件指出,其主要目的是希望讓用戶可以了解到數(shù)據(jù)通常放置于哪個目錄下。也就是說,F(xiàn)HS 的重點在于規(guī)范每個特定的目錄下應(yīng)該要放置什么樣子的數(shù)據(jù)而已。
(FHS(英文:Filesystem Hierarchy Standard 中文:文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn)),多數(shù) Linux 版本采用這種文件組織形式,F(xiàn)HS 定義了系統(tǒng)中每個區(qū)域的用途、所需要的最小構(gòu)成的文件和目錄同時還給出了例外處理與矛盾處理。)
FHS 依據(jù)文件系統(tǒng)使用的頻繁與否與是否用戶隨意改動,而將目錄定義成四種交互作用的形態(tài):
可分享的:可以分享給其他系統(tǒng)掛載使用的目錄,所以包括執(zhí)行文件與用戶的郵件等數(shù)據(jù),是能夠分享給網(wǎng)絡(luò)上其他主機掛載用的目錄。
不可分享的:自己機器上面運行的設(shè)備文件或者是與程序有關(guān)的 socket 文件等,由于僅與自身機器有關(guān),所以不適合分享給其他主機。
不變的:有些數(shù)據(jù)是不會經(jīng)常變動的,只會隨著系統(tǒng)版本而變動。例如函數(shù)庫、說明文件、系統(tǒng)管理員所管理的主機服務(wù)配置文件等。
可變動的:經(jīng)常改變的數(shù)據(jù),例如登錄文件、用戶文件等。
所有的unxi和類unix操作系統(tǒng)的目錄結(jié)構(gòu)均是以根開始的倒掛樹形結(jié)構(gòu)。
1.路徑:
一個linux路徑由"/"和目錄(文件)名稱兩部分組成
2.路徑的分類:
絕對路徑:凡是從根開始的路徑? /etc/
相對路徑:凡是非根開始的路徑? etc/passwd
3.使用pwd命令查看當(dāng)前所在的絕對路徑pwd:即print? work directory
[root@smileboy ~]# pwd
/root
根目錄(/)
根目錄是整個系統(tǒng)最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的,同時根目錄也與開機、還原、系統(tǒng)修復(fù)等操作有關(guān)。
根目錄下所有一級目錄全部因安裝軟件"filesystem"而生。
因此 FHS 標(biāo)準(zhǔn)建議:根目錄(/)所在分區(qū)應(yīng)該越小越好,且應(yīng)用程序所安裝的軟件最好不要與根目錄放在同一個分區(qū)內(nèi),保持根目錄越小越好。如此不但性能較好,根目錄所在的文件系統(tǒng)也比較不容易發(fā)生問題。
執(zhí)行文件目錄(/bin)
系統(tǒng)有很多放置執(zhí)行文件的目錄,但 /bin 比較特殊。因為 /bin 放置的是在單用戶維護(hù)模式下還能被操作的命令。在 /bin 下面的命令可以被 root 與一般賬號所使用,主要有 cat,chmod,chown,date,mv,mkdir,cp,bash 等常用的命令
開機文件目錄(/boot)
這個目錄主要放置開機會使用到的文件,包括Linux 內(nèi)核文件以及開機菜單與開機所需配置文件等,存儲啟動文件,比如grub和內(nèi)核文件。獨立的分區(qū),啟動分區(qū)掛載到boot,只是boot目錄存到了/下
驅(qū)動設(shè)備目錄(/dev)
在 Linux 系統(tǒng)上,任何設(shè)備與接口設(shè)備都是以文件的形式存在于這個目錄當(dāng)中的。你只要通過訪問這個目錄下面的某個文件,就等于訪問某個設(shè)備。比較重要的文件有 /dev/null,/dev/zero,/dev/tty 等。
常用設(shè)備文件:/dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/
pts/1, /dev/zero, /dev/null, /dev/random
配置文件目錄(/etc)
系統(tǒng)主要的配置文件幾乎都放置在這個目錄內(nèi),例如人員的賬號密碼文件、各種服務(wù)的起始文件等。一般來說,這個目錄下的各個文件屬性是可以讓一般用戶查閱的,但只有
root 有權(quán)利修改。比較重要的文件有 /etc/init.d,/etc/inittab,/etc/sysconfig 等。
用戶主文件夾(/home)
這是系統(tǒng)默認(rèn)的用戶主文件夾(home directory)。在你創(chuàng)建一個一般用戶賬號時,默認(rèn)的用戶主文件夾都會規(guī)范到這里來,所有普通賬戶的家目錄 。~ 代表當(dāng)前用戶的主文件夾。
系統(tǒng)函數(shù)庫(/lib)
系統(tǒng)的函數(shù)庫非常多,而 /lib 放置的則是在開機時會用到的函數(shù)庫,以及在 /bin 或 /sbin 下面的命令會調(diào)用的函數(shù)庫而已。
* 你可以把函數(shù)庫想象成是“外掛”,某些命令必須要有這些“外掛”才能夠順利完成程序的執(zhí)行之意。
/lib64 library存儲庫文件
媒體設(shè)備暫掛區(qū)(/media)
media 是“媒體”的英文,顧名思義,這個 /media 下面放置的就是可刪除的設(shè)備。包括軟盤、光盤、DVD等設(shè)備都暫時掛載于此。常見的文件名有 /media/floppy,/media/cdrom 等。
額外設(shè)備暫掛區(qū)(/mnt)
如果你想要暫時掛載某些額外的設(shè)備,一般建議你可以放置到這個目錄中。在比較早的時候,這個目錄的用途與 /media 相同。只是有了 /media 之后,這個目錄就被用來暫時掛載用了。
第三方軟件安裝目錄(/opt)
這個目錄是用于安裝第三方應(yīng)用程序的,某些軟件也會把它作為默認(rèn)安裝目錄,可以由用戶自己指定安裝位置。當(dāng)需要卸載第三方應(yīng)用程序時,可以直接刪除安裝目錄,而不影響系統(tǒng)其它任何設(shè)置。
管理員主文件夾(/root)
系統(tǒng)管理員(root)的主文件夾。之所以放在這里,是因為如果進(jìn)入單用戶維護(hù)模式而僅掛載根目錄時,該目錄就能夠擁有root的主文件夾,所以我們會希望root的主文件夾與根目錄放置在同一個分區(qū)中。
重要系統(tǒng)執(zhí)行文件(/sbin)
Linux 有非常多的命令是來設(shè)置系統(tǒng)環(huán)境的,這些命令只有 root 才能夠利用來“設(shè)置”系統(tǒng),其他用戶最多只能用來“查詢”而已。放在 /sbin 下面的為開機過程中所需的,里面包括了開機、修復(fù)、還原系統(tǒng)所需要的命令。
服務(wù)數(shù)據(jù)存放目錄(/srv)
srv 可以視為“service”的縮寫,是一些網(wǎng)絡(luò)服務(wù)啟動之后,這些服務(wù)所需要取用的數(shù)據(jù)目錄。常見的服務(wù)例如 WWW、FTP 等。舉例來說,WWW 服務(wù)需要的網(wǎng)頁數(shù)據(jù)就可以放置在 /srv/www/ 里。
臨時文件存放目錄(/tmp)
這是讓一般用戶或者是正在執(zhí)行的程序暫時放置文件的地方。這個目錄是任何人都能夠訪問,所以你需要定期清理一下。當(dāng)然,重要數(shù)據(jù)不可放置在此目錄,因為系統(tǒng)會不定期將 /tmp 目錄下的數(shù)據(jù)全部刪除。
丟失內(nèi)容修復(fù)目錄(/lost+found)
這個目錄是使用標(biāo)準(zhǔn)的 ext2/ext3 文件系統(tǒng)格式才會產(chǎn)生的一個目錄,目的相當(dāng)于文件系統(tǒng)發(fā)生錯誤時,將一些丟失的片段放置到這個目錄下。這個目錄通常會在分區(qū)的最頂層存在。
虛擬文件系統(tǒng)目錄(/proc)
這個目錄本身是一個虛擬文件系統(tǒng)(virtual filesystem)。它放置的數(shù)據(jù)都是在內(nèi)存當(dāng)中,例如系統(tǒng)內(nèi)核、進(jìn)程、外部設(shè)備以及網(wǎng)絡(luò)狀態(tài)等。因為這個目錄下的數(shù)據(jù)都是在內(nèi)存當(dāng)中的,所以本身并不占任何硬盤空間。
cpuinfo cpu信息
meminfo? 內(nèi)存信息
虛擬文件系統(tǒng)目錄(/sys)
這個目錄其實跟 /proc 非常類似,也是一個虛擬的文件系統(tǒng),主要也是記錄與內(nèi)核相關(guān)的信息,和proc不同的是如果硬件設(shè)備沒有插拔操作,其子目錄結(jié)構(gòu)不會發(fā)生變化。包括目前已加載的內(nèi)核模塊與內(nèi)核檢測到的硬件設(shè)備信息等。這個目錄同樣不占硬盤容量。
系統(tǒng)軟件資源目錄(/usr)
很多小白都會誤以為 /usr 是 user 的縮寫,其實 usr 是 Unix Software Resource 的縮寫,也就是 “UNIX 操作系統(tǒng)軟件資源” 所放置的目錄,而不是用戶的數(shù)據(jù),這點需要注意。類似于windows系統(tǒng)內(nèi)的programs目錄,系統(tǒng)內(nèi)所安裝軟件的文件會分散存儲到其各個子目錄下
/usr/local/src? 通常存儲下載的源安裝文件
/usr/src? ? ? ? ? ? 通常存儲下載的源安裝文件
FHS 建議所有軟件開發(fā)者應(yīng)該將他們的數(shù)據(jù)合理地分別放置到這個目錄下的子目錄,而不要自行新建該軟件的獨立目錄。
/usr/bin/:絕大部分的用戶可使用命令都放在這里
/usr/include/:C/C++等程序語言的頭文件(header)與包含文件(include)放置處
/usr/lib/:包含各應(yīng)用軟件的函數(shù)庫、目標(biāo)文件以及一些不被一般用戶慣用的執(zhí)行文件或腳本
/usr/local/:系統(tǒng)管理員在本機自行安裝下載的軟件建議安裝到此目錄
/usr/sbin/:非系統(tǒng)正常運行所需的系統(tǒng)命令
/usr/share/:放置共享文件的地方
/usr/src/:一般源碼建議放置到這里
常態(tài)可變動文件目錄(/var)
該目錄主要針對常態(tài)性可變動文件,包括緩存(cache)、登錄文件(log file)以及某些軟件運行所產(chǎn)生的文件,包括程序文件(lock file、run file),或者例如MySQL數(shù)據(jù)庫的文件等。
如果 /usr 是安裝時會占用較大硬盤容量的目錄,那么 /var 就是在系統(tǒng)運行后才會漸漸占用硬盤容量的目錄。
/var/cache/:應(yīng)用程序本身運行過程中會產(chǎn)生的一些暫存文件
/var/lib/:程序本身執(zhí)行的過程中,需要使用到的數(shù)據(jù)文件放置的目錄
/var/lock/:目錄下的文件資源一次只能被一個應(yīng)用程序所使用
/var/log/:放置登錄文件的目錄
/var/mail/:放置個人電子郵件信箱的目錄
/var/run/:某些程序或服務(wù)啟動后的PID目錄
/var/spool/:放置排隊等待其他應(yīng)用程程序使用的數(shù)據(jù)
/var variable 存儲一些經(jīng)常變化的文件(ftp發(fā)布文件的目錄,web發(fā)布
網(wǎng)站的目錄,日志,郵件,計劃任務(wù))
/run? ? ? ? rhel7新增加目錄,是/var/run的硬鏈接,之前的光驅(qū)和u盤自
動掛載目錄從/media換到了/run/media
/cgroup? 資源控制
/net /srv /selinux /lost+found這幾個目錄平時用的很少
本文基于https://www.cnblogs.com/woider/p/6618295.html博文整理補充,待完善。