學(xué)習(xí) Linux,不僅限于學(xué)習(xí)各種命令,了解整個(gè) Linux 文件系統(tǒng)的目錄結(jié)構(gòu)以及各個(gè)目錄的功能同樣至關(guān)重要。
使用 Linux 時(shí),通過(guò)命令行輸入 ls -l / 可以看到,在 Linux 根目錄(/)下包含很多的子目錄(稱(chēng)為一級(jí)目錄),例如 bin、boot、dev 等。同時(shí),各一級(jí)目錄下還含有很多子目錄(稱(chēng)為二級(jí)目錄),比如 /bin/bash、/bin/ed 等。Linux 文件系統(tǒng)目錄總體呈現(xiàn)樹(shù)形結(jié)構(gòu),/ 根目錄就相當(dāng)于樹(shù)根。
由于 Linux 系統(tǒng)免費(fèi)開(kāi)源,使得 Linux 發(fā)行版本有很多,利用 Linux 開(kāi)發(fā)產(chǎn)品的團(tuán)隊(duì)也有很多,如果任由每個(gè)人都按照自己的想法來(lái)配置 Linux 系統(tǒng)文件目錄,后期可能會(huì)產(chǎn)生諸多的管理問(wèn)題。試想,如果你進(jìn)入一家公司,所用 Linux 系統(tǒng)的文件目錄結(jié)構(gòu)與所學(xué)的完全不同,實(shí)在令人頭疼。
為了避免諸多使用者對(duì) Linux 系統(tǒng)目錄結(jié)構(gòu)天馬行空,Linux 基金會(huì)發(fā)布了 FHS 標(biāo)準(zhǔn)。多數(shù) Linux 發(fā)行版系統(tǒng)都遵循這一標(biāo)準(zhǔn)。
FHS(Filesystem Hierarchy Standard),文件系統(tǒng)層次化標(biāo)準(zhǔn),該標(biāo)準(zhǔn)規(guī)定了 Linux 系統(tǒng)中所有一級(jí)目錄以及部分二級(jí)目錄(/usr 和 /var)的用途。發(fā)布此標(biāo)準(zhǔn)的主要目的就是為了讓用戶(hù)清楚地了解每個(gè)目錄應(yīng)該存放什么類(lèi)型的文件。
》》》傳智播客linux培訓(xùn)班,帶你從新手到大神,咨詢(xún)右下角窗口咨詢(xún)開(kāi)班時(shí)間《《《
Linux 根目錄(/)
FHS 認(rèn)為,Linux 系統(tǒng)的根目錄(/)最為重要(沒(méi)有之一),其原因有以下 2 點(diǎn):
所有目錄都是由根目錄衍生出來(lái)的;
根目錄與系統(tǒng)的開(kāi)機(jī)、修復(fù)、還原密切相關(guān);
因此,根目錄必須包含開(kāi)機(jī)軟件、核心文件、開(kāi)機(jī)所需程序、函數(shù)庫(kù)、修復(fù)系統(tǒng)程序等文件
一級(jí)目錄 |
功能(作用) |
/bin/ |
存放系統(tǒng)命令,普通用戶(hù)和 root 都可以執(zhí)行。放在 /bin 下的命令在單用戶(hù)模式下也可以執(zhí)行 |
/boot/ |
系統(tǒng)啟動(dòng)目錄,保存與系統(tǒng)啟動(dòng)相關(guān)的文件,如內(nèi)核文件和啟動(dòng)引導(dǎo)程序(grub)文件等 |
/dev/ |
設(shè)備文件保存位置 |
/etc/ |
配置文件保存位置。系統(tǒng)內(nèi)所有采用默認(rèn)安裝方式(rpm 安裝)的服務(wù)配置文件全部保存在此目錄中,如用戶(hù)信息、服務(wù)的啟動(dòng)腳本、常用服務(wù)的配置文件等 |
/home/ |
普通用戶(hù)的宿主目錄。在創(chuàng)建用戶(hù)時(shí),每個(gè)用戶(hù)要有一個(gè)默認(rèn)登錄和保存自己數(shù)據(jù)的位置,就是用戶(hù)的宿主目錄,所有普通用戶(hù)的宿主目錄是在 /home/ 下建立一個(gè)和用戶(hù)名相同的目錄。如用戶(hù) liming 的宿主目錄就是 /home/liming |
/lib/ |
系統(tǒng)調(diào)用的函數(shù)庫(kù)保存位置 |
/media/ |
掛載目錄。系統(tǒng)建議用來(lái)掛載媒體設(shè)備,如軟盤(pán)和光盤(pán) |
/mnt/ |
掛載目錄。早期 Linux 中只有這一個(gè)掛載目錄,并沒(méi)有細(xì)分。系統(tǒng)建議這個(gè)目錄用來(lái)掛載額外的設(shè)備,如 U 盤(pán)、移動(dòng)硬盤(pán)和其他操作系統(tǒng)的分區(qū) |
/misc/ |
掛載目錄。系統(tǒng)建議用來(lái)掛載 NFS 服務(wù)的共享目錄。雖然系統(tǒng)準(zhǔn)備了三個(gè)默認(rèn)掛載目錄 /media/、/mnt/、/misc/,但是到底在哪個(gè)目錄中掛載什么設(shè)備可以由管理員自己決定。例如,筆者在接觸 Linux 的時(shí)候,默認(rèn)掛載目錄只有 /mnt/,所以養(yǎng)成了在 /mnt/ 下建立不同目錄掛載不同設(shè)備的習(xí)慣,如 /mnt/cdrom/ 掛載光盤(pán)、/mnt/usb/ 掛載 U 盤(pán),都是可以的 |
/opt/ |
第三方安裝的軟件保存位置。這個(gè)目錄是放置和安裝其他軟件的位置,手工安裝的源碼包軟件都可以安裝到這個(gè)目錄中。不過(guò)筆者還是習(xí)慣把軟件放到 /usr/local/ 目錄中,也就是說(shuō),/usr/local/ 目錄也可以用來(lái)安裝軟件 |
/root/ |
root 的宿主目錄。普通用戶(hù)宿主目錄在 /home/ 下,root 宿主目錄直接在“/”下 |
/sbin/ |
保存與系統(tǒng)環(huán)境設(shè)置相關(guān)的命令,只有 root 可以使用這些命令進(jìn)行系統(tǒng)環(huán)境設(shè)置,但也有些命令可以允許普通用戶(hù)查看 |
/srv/ |
服務(wù)數(shù)據(jù)目錄。一些系統(tǒng)服務(wù)啟動(dòng)之后,可以在這個(gè)目錄中保存所需要的數(shù)據(jù) |
/tmp/ |
臨時(shí)目錄。系統(tǒng)存放臨時(shí)文件的目錄,在該目錄下,所有用戶(hù)都可以訪(fǎng)問(wèn)和寫(xiě)入。建議此目錄中不能保存重要數(shù)據(jù),最好每次開(kāi)機(jī)都把該目錄清空 |
FHS 針對(duì)根目錄中包含的子目錄僅限于表 1,但除此之外,Linux 系統(tǒng)根目錄下通常還包含表 2 中的幾個(gè)一級(jí)目錄。
一級(jí)目錄 |
功能(作用) |
/lost+found/ |
當(dāng)系統(tǒng)意外崩潰或意外關(guān)機(jī)時(shí),產(chǎn)生的一些文件碎片會(huì)存放在這里。在系統(tǒng)啟動(dòng)的過(guò)程中,fsck 工具會(huì)檢查這里,并修復(fù)已經(jīng)損壞的文件系統(tǒng)。這個(gè)目錄只在每個(gè)分區(qū)中出現(xiàn),例如,/lost+found 就是根分區(qū)的備份恢復(fù)目錄,/boot/lost+found 就是 /boot 分區(qū)的備份恢復(fù)目錄 |
/proc/ |
虛擬文件系統(tǒng)。該目錄中的數(shù)據(jù)并不保存在硬盤(pán)上,而是保存到內(nèi)存中。主要保存系統(tǒng)的內(nèi)核、進(jìn)程、外部設(shè)備狀態(tài)和網(wǎng)絡(luò)狀態(tài)等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存設(shè)備驅(qū)動(dòng)的列表的,/proc/filesystems 是保存文件系統(tǒng)列表的,/proc/net 是保存網(wǎng)絡(luò)協(xié)議信息的...... |
/sys/ |
虛擬文件系統(tǒng)。和 /proc/ 目錄相似,該目錄中的數(shù)據(jù)都保存在內(nèi)存中,主要保存與內(nèi)核相關(guān)的信息 |
Linux /usr目錄
usr(注意不是 user),全稱(chēng)為 Unix Software Resource,此目錄用于存儲(chǔ)系統(tǒng)軟件資源。FHS 建議所有開(kāi)發(fā)者,應(yīng)把軟件產(chǎn)品的數(shù)據(jù)合理的放置在 /usr 目錄下的各子目錄中,而不是為他們的產(chǎn)品創(chuàng)建單獨(dú)的目錄。
Linux 系統(tǒng)中,所有系統(tǒng)默認(rèn)的軟件都存儲(chǔ)在 /usr 目錄下,/usr 目錄類(lèi)似 Windows 系統(tǒng)中 C:\Windows\ + C:\Program files\ 兩個(gè)目錄的綜合體。
FHS 建議,/usr 目錄應(yīng)具備表 3 所示的子目錄。
子目錄 |
功能(作用) |
/usr/bin/ |
存放系統(tǒng)命令,普通用戶(hù)和超級(jí)用戶(hù)都可以執(zhí)行。這些命令和系統(tǒng)啟動(dòng)無(wú)關(guān),在單用戶(hù)模式下不能執(zhí)行 |
/usr/sbin/ |
存放根文件系統(tǒng)不必要的系統(tǒng)管理命令,如多數(shù)服務(wù)程序,只有 root 可以使用。 |
/usr/lib/ |
應(yīng)用程序調(diào)用的函數(shù)庫(kù)保存位置 |
/usr/XllR6/ |
圖形界面系統(tǒng)保存位置 |
/usr/local/ |
手工安裝的軟件保存位置。我們一般建議源碼包軟件安裝在這個(gè)位置 |
/usr/share/ |
應(yīng)用程序的資源文件保存位置,如幫助文檔、說(shuō)明文檔和字體目錄 |
/usr/src/ |
源碼包保存位置。我們手工下載的源碼包和內(nèi)核源碼包都可以保存到這里。不過(guò)筆者更習(xí)慣把手工下載的源碼包保存到 /usr/local/src/ 目錄中,把內(nèi)核源碼保存到 /usr/src/linux/ 目錄中 |
/usr/include |
C/C++ 等編程語(yǔ)言頭文件的放置目錄 |
Linux /var 目錄
/var 目錄用于存儲(chǔ)動(dòng)態(tài)數(shù)據(jù),例如緩存、日志文件、軟件運(yùn)行過(guò)程中產(chǎn)生的文件等。通常,此目錄下建議包含如表 4 所示的這些子目錄。
/var子目錄 |
功能(作用) |
/var/lib/ |
程序運(yùn)行中需要調(diào)用或改變的數(shù)據(jù)保存位置。如 MySQL 的數(shù)據(jù)庫(kù)保存在 /var/lib/mysql/ 目錄中 |
/var/log/ |
登陸文件放置的目錄,其中所包含比較重要的文件如 /var/log/messages, /var/log/wtmp 等。 |
/var/run/ |
一些服務(wù)和程序運(yùn)行后,它們的 PID(進(jìn)程 ID)保存位置 |
/var/spool/ |
里面主要都是一些臨時(shí)存放,隨時(shí)會(huì)被用戶(hù)所調(diào)用的數(shù)據(jù),例如 /var/spool/mail/ 存放新收到的郵件,/var/spool/cron/ 存放系統(tǒng)定時(shí)任務(wù)。 |
/var/www/ |
RPM 包安裝的 Apache 的網(wǎng)頁(yè)主目錄 |
/var/nis和/var/yp |
NIS 服務(wù)機(jī)制所使用的目錄,nis 主要記錄所有網(wǎng)絡(luò)中每一個(gè) client 的連接信息;yp 是 linux 的 nis 服務(wù)的日志文件存放的目錄 |
/var/tmp |
一些應(yīng)用程序在安裝或執(zhí)行時(shí),需要在重啟后使用的某些文件,此目錄能將該類(lèi)文件暫時(shí)存放起來(lái),完成后再行刪除 |
根據(jù)以上各表列舉的各目錄及作用,如果我們要做一些實(shí)驗(yàn)和練習(xí),需要?jiǎng)?chuàng)建一些臨時(shí)文件,應(yīng)該保存在哪里呢?
答案是用戶(hù)的宿主目錄或 /tmp/ 臨時(shí)目錄。但是要小心有些目錄中不能直接修改和保存數(shù)據(jù),比如 /proc/fn/sys/ 目錄,因?yàn)樗鼈兪潜4嬖趦?nèi)存中的,如果在這里寫(xiě)入數(shù)據(jù),那么你的內(nèi)存會(huì)越來(lái)越小,直至死機(jī);/boot/ 目錄也不能保存額外數(shù)據(jù),因?yàn)?/boot/ 目錄會(huì)單獨(dú)分區(qū)作為啟動(dòng)分區(qū),如果沒(méi)有空閑空間,則會(huì)導(dǎo)致系統(tǒng)不能正常啟動(dòng)。
總之,Linux 要在合理的目錄下進(jìn)行操作和修改。