Linux 之目录 -鸟哥的Linux私房菜
?
根據(jù) FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以了 解到已安裝軟件通常放置于那個(gè)目錄下, 所以他們希望獨(dú)立的軟件開發(fā)商、操作系統(tǒng)制作者、以及想 要維護(hù)系統(tǒng)的用戶,都能夠遵循 FHS 的標(biāo)準(zhǔn)。 也就是說,FHS 的重點(diǎn)在于規(guī)范每個(gè)特定的目錄下應(yīng)該 要放置什么樣子的數(shù)據(jù)而已。 這樣做好處非常多,因?yàn)?Linux 操作系統(tǒng)就能夠在既有的面貌下(目錄架 構(gòu)不變)發(fā)展出開發(fā)者想要的獨(dú)特風(fēng)格。
事實(shí)上,FHS 是根據(jù)過去的經(jīng)驗(yàn)一直再持續(xù)的改版的,FHS 依據(jù)文件系統(tǒng)使用的頻繁與否與是否允許使 用者隨意更動(dòng), 而將目錄定義成為四種交互作用的形態(tài),用表格來說有點(diǎn)像底下這樣:
上表中的目錄就是一些代表性的目錄,該目錄底下所放置的數(shù)據(jù)在底下會談到,這里先略過不談。 我 們要了解的是,什么是那四個(gè)類型?
-
? ?可分享的:可以分享給其他系統(tǒng)掛載使用的目錄,所以包括執(zhí)行文件與用戶的郵件等數(shù)據(jù), 是 能夠分享給網(wǎng)絡(luò)上其他主機(jī)掛載用的目錄;
-
? ?不可分享的:自己機(jī)器上面運(yùn)作的裝置檔案或者是與程序有關(guān)的 socket 檔案等, 由于僅與自身 機(jī)器有關(guān),所以當(dāng)然就不適合分享給其他主機(jī)了。
-
? ?不變的:有些數(shù)據(jù)是不會經(jīng)常變動(dòng)的,跟隨著 distribution 而不變動(dòng)。 例如函式庫、文件說明 文件、系統(tǒng)管理員所管理的主機(jī)服務(wù)配置文件等等;
-
? ?可變動(dòng)的:經(jīng)常改變的數(shù)據(jù),例如登錄文件、一般用戶可自行收受的新聞組等。
事實(shí)上,FHS 針對目錄樹架構(gòu)僅定義出三層目錄底下應(yīng)該放置什么數(shù)據(jù)而已,分別是底下這三個(gè)目錄的 定義:
| 可分享的(shareable) | 不可分享的(unshareable) |
| 不變的(static) /usr (軟件放置處) | /etc (配置文件) |
| /opt (第三方協(xié)力軟件) | /boot (開機(jī)與核心檔) |
| 可變動(dòng)的(variable) /var/mail (使用者郵件信箱) | /var/run (程序相關(guān)) |
| /var/spool/news (新聞組) | /var/lock (程序相關(guān)) |
?
-
? ?/usr (unix software resource):與軟件安裝/執(zhí)行有關(guān);
-
? ?/var (variable):與系統(tǒng)運(yùn)作過程有關(guān)。
為什么要定義出這三層目錄呢?其實(shí)是有意義的喔!每層目錄底下所應(yīng)該要放置的目錄也都又特定的規(guī) 定喔! 由于我們尚未介紹完整的 Linux 系統(tǒng),所以底下的介紹你可能會看不懂!沒關(guān)系,先有個(gè)概念 即可, 等到妳將基礎(chǔ)篇全部看完后,就重頭將基礎(chǔ)篇再看一遍!到時(shí)候你就會豁然開朗啦!^_^
Tips:
這個(gè) root 在 Linux 里面的意義真的很多很多~多到讓人搞不懂那是啥玩意兒。 如 果以『賬號』的角度來看,所謂的 root 指的是『系統(tǒng)管理員!』的身份, 如果以 『目錄』的角度來看,所謂的 root 意即指的是根目錄,就是 / 啦~ 要特別留意 喔!
? 根目錄 (/) 的意義與內(nèi)容:
根目錄是整個(gè)系統(tǒng)最重要的一個(gè)目錄,因?yàn)椴坏械哪夸浂际怯筛夸浹苌鰜淼? 同時(shí)根目錄也 與開機(jī)/還原/系統(tǒng)修復(fù)等動(dòng)作有關(guān)。 由于系統(tǒng)開機(jī)時(shí)需要特定的開機(jī)軟件、核心檔案、開機(jī)所需程序、 函式庫等等檔案數(shù)據(jù),若系統(tǒng)出現(xiàn)錯(cuò)誤時(shí),根目錄也必須要包含有能夠修復(fù)文件系統(tǒng)的程序才行。 因 為根目錄是這么的重要,所以在 FHS 的要求方面,他希望根目錄不要放在非常大的分割槽內(nèi), 因?yàn)樵?大的分割槽妳會放入越多的數(shù)據(jù),如此一來根目錄所在分割槽就可能會有較多發(fā)生錯(cuò)誤的機(jī)會。
因此 FHS 標(biāo)準(zhǔn)建議:根目錄(/)所在分割槽應(yīng)該越小越好, 且應(yīng)用程序所安裝的軟件最好不要與根目錄 放在同一個(gè)分割槽內(nèi),保持根目錄越小越好。 如此不但效能較佳,根目錄所在的文件系統(tǒng)也較不容易 發(fā)生問題。
有鑒于上述的說明,因此 FHS 定義出根目錄(/)底下應(yīng)該要有底下這些次目錄的存在才好:
| 目錄 應(yīng)放置檔案內(nèi)容 |
| 系統(tǒng)有很多放置執(zhí)行文件的目錄,但/bin 比較特殊。因?yàn)?bin 放置的是在單人維護(hù)模 /bin 式下還能夠被操作的指令。 在/bin 底下的指令可以被 root 與一般賬號所使用,主要 有:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的指令。 |
| 這個(gè)目錄主要在放置開機(jī)會使用到的檔案,包括 Linux 核心檔案以及開機(jī)選單與開機(jī) /boot 所需配置文件等等。 Linux kernel 常用的檔名為:vmlinuz,如果使用的是 grub 這 個(gè)開機(jī)管理程序, 則還會存在/boot/grub/這個(gè)目錄喔! |
| 在 Linux 系統(tǒng)上,任何裝置與接口設(shè)備都是以檔案的型態(tài)存在于這個(gè)目錄當(dāng)中的。 你 /dev 只要透過存取這個(gè)目錄底下的某個(gè)檔案,就等于存取某個(gè)裝置啰~ 比要重要的檔案有 /dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等 |
| /etc 系統(tǒng)主要的配置文件幾乎都放置在這個(gè)目錄內(nèi),例如人員的賬號密碼文件、 各種服務(wù) 的啟始檔等等。一般來說,這個(gè)目錄下的各文件屬性是可以讓一般使用者查閱的, 但 是只有 root 有權(quán)力修改。FHS 建議不要放置可執(zhí)行文件(binary)在這個(gè)目錄中喔。比 較重要的檔案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目錄有:
|
?
/lib
這是系統(tǒng)默認(rèn)的用戶家目錄(home directory)。在你新增一個(gè)一般使用者賬號時(shí), 默 認(rèn)的用戶家目錄都會規(guī)范到這里來。比較重要的是,家目錄有兩種代號喔: ~:代表目前這個(gè)用戶的家目錄,而
~dmtsai :則代表 dmtsai 的家目錄!
系統(tǒng)的函式庫非常的多,而/lib 放置的則是在開機(jī)時(shí)會用到的函式庫, 以及在/bin 或 /sbin 底下的指令會呼叫的函式庫而已。 什么是函式庫呢?妳可以將他想成是『外 掛』,某些指令必須要有這些『外掛』才能夠順利完成程序的執(zhí)行之意。 尤其重要的 是/lib/modules/這個(gè)目錄, 因?yàn)樵撃夸洉胖煤诵南嚓P(guān)的模塊(驅(qū)動(dòng)程序)喔!
media 是『媒體』的英文,顧名思義,這個(gè)/media 底下放置的就是可移除的裝置 /media 啦! 包括軟盤、光盤、DVD 等等裝置都暫時(shí)掛載于此。常見的檔名有:
/media/floppy, /media/cdrom 等等。
如果妳想要暫時(shí)掛載某些額外的裝置,一般建議妳可以放置到這個(gè)目錄中。 在古早時(shí) /mnt 候,這個(gè)目錄的用途與/media 相同啦!只是有了/media 之后,這個(gè)目錄就用來暫時(shí)
掛載用了。
這個(gè)是給第三方協(xié)力軟件放置的目錄。什么是第三方協(xié)力軟件啊? 舉例來說,KDE
這個(gè)桌面管理系統(tǒng)是一個(gè)獨(dú)立的計(jì)劃,不過他可以安裝到 Linux 系統(tǒng)中,因此 KDE /opt 的軟件就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟件(非原本的
distribution 提供的),那么也能夠?qū)⒛愕能浖惭b到這里來。 不過,以前的 Linux 系 統(tǒng)中,我們還是習(xí)慣放置在/usr/local 目錄下呢!
系統(tǒng)管理員(root)的家目錄。之所以放在這里,是因?yàn)槿绻M(jìn)入單人維護(hù)模式而僅掛 /root 載根目錄時(shí), 該目錄就能夠擁有 root 的家目錄,所以我們會希望 root 的家目錄與根
目錄放置在同一個(gè)分割槽中。Linux 有非常多指令是用來設(shè)定系統(tǒng)環(huán)境的,這些指令只有 root 才能夠利用來『設(shè) 定』系統(tǒng),其他用戶最多只能用來『查詢』而已。 放在/sbin 底下的為開機(jī)過程中所 需要的,里面包括了開機(jī)、修復(fù)、還原系統(tǒng)所需要的指令。 至于某些服務(wù)器軟件程 序,一般則放置到/usr/sbin/當(dāng)中。至于本機(jī)自行安裝的軟件所產(chǎn)生的系統(tǒng)執(zhí)行文件 (system binary), 則放置到/usr/local/sbin/當(dāng)中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs 等等。
srv 可以視為『service』的縮寫,是一些網(wǎng)絡(luò)服務(wù)啟動(dòng)之后,這些服務(wù)所需要取用的 /srv 數(shù)據(jù)目錄。 常見的服務(wù)例如 WWW, FTP 等等。舉例來說,WWW 服務(wù)器需要的網(wǎng)頁
資料就可以放置在/srv/www/里面。
這是讓一般用戶或者是正在執(zhí)行的程序暫時(shí)放置檔案的地方。 這個(gè)目錄是任何人都能 /tmp 夠存取的,所以你需要定期的清理一下。當(dāng)然,重要數(shù)據(jù)不可放置在此目錄啊! 因?yàn)?/p>
FHS 甚至建議在開機(jī)時(shí),應(yīng)該要將/tmp 下的數(shù)據(jù)都刪除唷!
事實(shí)上 FHS 針對根目錄所定義的標(biāo)準(zhǔn)就僅有上面的咚咚,不過我們的 Linux 底下還有許多目錄你也需 要了解一下的。 底下是幾個(gè)在 Linux 當(dāng)中也是非常重要的目錄喔:
/sbin
| 目錄 | 應(yīng)放置檔案內(nèi)容 |
| ? | 這個(gè)目錄是使用標(biāo)準(zhǔn)的 ext2/ext3 文件系統(tǒng)格式才會產(chǎn)生的一個(gè)目錄,目的在于當(dāng) 文件系統(tǒng)發(fā)生錯(cuò)誤時(shí), 將一些遺失的片段放置到這個(gè)目錄下。這個(gè)目錄通常會在 分割槽的最頂層存在, 例如你加裝一顆硬盤于/disk 中,那在這個(gè)系統(tǒng)下就會自動(dòng) 產(chǎn)生一個(gè)這樣的目錄『/disk/lost+found』 |
| /lost+found | |
| ? | |
| ? | 這個(gè)目錄本身是一個(gè)『虛擬文件系統(tǒng)(virtual filesystem)』喔!他放置的數(shù)據(jù)都是 在內(nèi)存當(dāng)中, 例如系統(tǒng)核心、行程信息(process)、周邊裝置的狀態(tài)及網(wǎng)絡(luò)狀態(tài)等 等。因?yàn)檫@個(gè)目錄下的數(shù)據(jù)都是在內(nèi)存當(dāng)中, 所以本身不占任何硬盤空間啊!比 較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
| /proc | |
| ? | |
| /sys | 這個(gè)目錄其實(shí)跟/proc 非常類似,也是一個(gè)虛擬的文件系統(tǒng),主要也是記錄與核心 |
相關(guān)的信息。 包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等等。這 個(gè)目錄同樣不占硬盤容量喔!
除了這些目錄的內(nèi)容之外,另外要注意的是,因?yàn)楦夸浥c開機(jī)有關(guān),開機(jī)過程中僅有根目錄會被掛 載, 其他分割槽則是在開機(jī)完成之后才會持續(xù)的進(jìn)行掛載的行為。就是因?yàn)槿绱?因此根目錄下與開 機(jī)過程有關(guān)的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底 下這些:
? /etc:配置文件
? /bin:重要執(zhí)行檔
? /dev:所需要的裝置檔案
? /lib:執(zhí)行檔所需的函式庫與核心所需的模塊 ? /sbin:重要的系統(tǒng)執(zhí)行文件
這五個(gè)目錄千萬不可與根目錄分開在不同的分割槽!請背下來啊! 好了,談完了根目錄,接下來我們 就來談?wù)?usr 以及/var 啰!先看/usr 里面有些什么東西:
? /usr 的意義與內(nèi)容:
依據(jù) FHS 的基本定義,/usr 里面放置的數(shù)據(jù)屬于可分享的與不可變動(dòng)的(shareable, static), 如果你知 道如何透過網(wǎng)絡(luò)進(jìn)行分割槽的掛載(例如在服務(wù)器篇會談到的 NFS 服務(wù)器),那么/usr 確實(shí)可以分享給局 域網(wǎng)絡(luò)內(nèi)的其他主機(jī)來使用喔!
很多讀者都會誤會/usr 為 user 的縮寫,其實(shí) usr 是 Unix Software Resource 的縮寫, 也就是『Unix 操作系統(tǒng)軟件資源』所放置的目錄,而不是用戶的數(shù)據(jù)啦!這點(diǎn)要注意。 FHS 建議所有軟件開發(fā)者, 應(yīng)該將他們的數(shù)據(jù)合理的分別放置到這個(gè)目錄下的次目錄,而不要自行建立該軟件自己獨(dú)立的目錄。
因?yàn)槭撬邢到y(tǒng)默認(rèn)的軟件(distribution 發(fā)布者提供的軟件)都會放置到/usr 底下,因此這個(gè)目錄有點(diǎn) 類似 Windows 系統(tǒng)的『C:\Windows\ + C:\Program files\』這兩個(gè)目錄的綜合體,系統(tǒng)剛安裝完畢 時(shí),這個(gè)目錄會占用最多的硬盤容量。 一般來說,/usr 的次目錄建議有底下這些:
| 目錄 應(yīng)放置檔案內(nèi)容 |
| /usr/X11R6/ 為 X Window System 重要數(shù)據(jù)所放置的目錄,之所以取名為 X11R6 是因?yàn)樽詈?的 X 版本為第 11 版,且該版的第 6 次釋出之意。 |
| /usr/bin/ 絕大部分的用戶可使用指令都放在這里!請注意到他與/bin 的不同之處。(是否與 開機(jī)過程有關(guān)) |
| /usr/include/ c/c++等程序語言的檔頭(header)與包含檔(include)放置處,當(dāng)我們以 tarball 方 式 (*.tar.gz 的方式安裝軟件)安裝某些數(shù)據(jù)時(shí),會使用到里頭的許多包含檔喔! |
| 包含各應(yīng)用軟件的函式庫、目標(biāo)檔案(object file),以及不被一般使用者慣用的執(zhí) 行檔或腳本(script)。 某些軟件會提供一些特殊的指令來進(jìn)行服務(wù)器的設(shè)定,這些 /usr/lib/ 指令也不會經(jīng)常被系統(tǒng)管理員操作, 那就會被擺放到這個(gè)目錄下啦。要注意的 是,如果你使用的是 X86_64 的 Linux 系統(tǒng), 那可能會有/usr/lib64/目錄產(chǎn)生 喔! |
| 系統(tǒng)管理員在本機(jī)自行安裝自己下載的軟件(非 distribution 默認(rèn)提供者),建議安 裝到此目錄, 這樣會比較便于管理。舉例來說,你的 distribution 提供的軟件較 /usr/local/ 舊,你想安裝較新的軟件但又不想移除舊版, 此時(shí)你可以將新版軟件安裝于 /usr/local/目錄下,可與原先的舊版軟件有分別啦! 你可以自行到/usr/local 去 看看,該目錄下也是具有 bin, etc, include, lib...的次目錄喔! |
| /usr/sbin/ 非系統(tǒng)正常運(yùn)作所需要的系統(tǒng)指令。最常見的就是某些網(wǎng)絡(luò)服務(wù)器軟件的服務(wù)指 令(daemon)啰! |
放置共享文件的地方,在這個(gè)目錄下放置的數(shù)據(jù)幾乎是不分硬件架構(gòu)均可讀取的 數(shù)據(jù), 因?yàn)閹缀醵际俏谋疚募?在此目錄下常見的還有這些次目錄:
? /usr/share/man:聯(lián)機(jī)幫助文件
? /usr/share/doc:軟件雜項(xiàng)的文件說明
? /usr/share/zoneinfo:與時(shí)區(qū)有關(guān)的時(shí)區(qū)檔案
/usr/share/
一般原始碼建議放置到這里,src 有 source 的意思。至于核心原始碼則建議放置 到/usr/src/linux/目錄下。
/usr/src/
? /var 的意義與內(nèi)容:
如果/usr 是安裝時(shí)會占用較大硬盤容量的目錄,那么/var 就是在系統(tǒng)運(yùn)作后才會漸漸占用硬盤容量的目 錄。 因?yàn)?var 目錄主要針對常態(tài)性變動(dòng)的檔案,包括快取(cache)、登錄檔(log file)以及某些軟件運(yùn)作 所產(chǎn)生的檔案, 包括程序檔案(lock file, run file),或者例如 MySQL 數(shù)據(jù)庫的檔案等等。常見的次目 錄有:
目錄 應(yīng)放置檔案內(nèi)容 /var/cache/ 應(yīng)用程序本身運(yùn)作過程中會產(chǎn)生的一些暫存檔;
程序本身執(zhí)行的過程中,需要使用到的數(shù)據(jù)文件放置的目錄。在此目錄下各自的軟 /var/lib/ 件應(yīng)該要有各自的目錄。 舉例來說,MySQL 的數(shù)據(jù)庫放置到/var/lib/mysql/而
rpm 的數(shù)據(jù)庫則放到/var/lib/rpm 去!
某些裝置或者是檔案資源一次只能被一個(gè)應(yīng)用程序所使用,如果同時(shí)有兩個(gè)程序使 用該裝置時(shí), 就可能產(chǎn)生一些錯(cuò)誤的狀況,因此就得要將該裝置上鎖(lock),以確 保該裝置只會給單一軟件所使用。 舉例來說,刻錄機(jī)正在刻錄一塊光盤,你想一 下,會不會有兩個(gè)人同時(shí)在使用一個(gè)刻錄機(jī)燒片? 如果兩個(gè)人同時(shí)刻錄,那片子寫 入的是誰的資料?所以當(dāng)?shù)谝粋€(gè)人在刻錄時(shí)該刻錄機(jī)就會被上鎖, 第二個(gè)人就得要 該裝置被解除鎖定(就是前一個(gè)人用完了)才能夠繼續(xù)使用啰。
重要到不行!這是登錄文件放置的目錄!里面比較重要的檔案如 /var/log/messages, /var/log/wtmp(記錄登入者的信息)等。
放置個(gè)人電子郵件信箱的目錄,不過這個(gè)目錄也被放置到/var/spool/mail/目錄 中! 通常這兩個(gè)目錄是互為鏈接文件啦!
某些程序或者是服務(wù)啟動(dòng)后,會將他們的 PID 放置在這個(gè)目錄下喔! 至于 PID 的 意義我們會在后續(xù)章節(jié)提到的。
這個(gè)目錄通常放置一些隊(duì)列數(shù)據(jù),所謂的『隊(duì)列』就是排隊(duì)等待其他程序使用的數(shù)據(jù)啦! 這些數(shù)據(jù)被使用后通常都會被刪除。舉例來說,系統(tǒng)收到新信會放置到 /var/spool/ /var/spool/mail/中, 但使用者收下該信件后該封信原則上就會被刪除。信件如果 暫時(shí)寄不出去會被放到/var/spool/mqueue/中, 等到被送出后就被刪除。如果是
工作排程數(shù)據(jù)(crontab),就會被放置到/var/spool/cron/目錄中!
建議在你讀完整個(gè)基礎(chǔ)篇之后,可以挑戰(zhàn) FHS 官方英文文件(參考本章參考數(shù)據(jù)),相信會讓你對于 Linux 操作系統(tǒng)的目錄有更深入的了解喔!
? 針對 FHS,各家 distributions 的異同
由于 FHS 僅是定義出最上層(/)及次層(/usr, /var)的目錄內(nèi)容應(yīng)該要放置的檔案或目錄數(shù)據(jù), 因此,在 其他次目錄層級內(nèi),就可以隨開發(fā)者自行來配置了。舉例來說,CentOS 的網(wǎng)絡(luò)設(shè)定數(shù)據(jù)放在 /etc/sysconfig/network-scripts/ 目錄下,但是 SuSE 則是將網(wǎng)絡(luò)放置在 /etc/sysconfig/network/ 目
/var/lock/
/var/log/ /var/mail/ /var/run/
錄下,目錄名稱可是不同的呢!不過只要記住大致的 FHS 標(biāo)準(zhǔn),差異性其實(shí)有限啦!?
目錄樹(directory tree)
另外,在 Linux 底下,所有的檔案與目錄都是由根目錄開始的!那是所有目錄與檔案的源頭~ 然后再 一個(gè)一個(gè)的分支下來,有點(diǎn)像是樹枝狀啊~因此,我們也稱這種目錄配置方式為:『目錄樹(directory tree)』 這個(gè)目錄樹有什么特性呢?他主要的特性有:
-
? ?目錄樹的啟始點(diǎn)為根目錄 (/, root);
-
? ?每一個(gè)目錄不止能使用本地端的 partition 的文件系統(tǒng),也可以使用網(wǎng)絡(luò)上的 filesystem 。舉例
來說, 可以利用 Network File System (NFS) 服務(wù)器掛載某特定目錄等。 ? 每一個(gè)檔案在此目錄樹中的文件名(包含完整路徑)都是獨(dú)一無二的。?
轉(zhuǎn)載于:https://www.cnblogs.com/itech168/p/4006175.html
總結(jié)
以上是生活随笔為你收集整理的Linux 之目录 -鸟哥的Linux私房菜的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪些医院治疗不育好
- 下一篇: Linux中exit与_exit的区别