CentOS学习笔记--目录配置
?
Linux目錄配置
類Linux的目錄看上去差不多,為什么? 以下內(nèi)容節(jié)選自l 鳥哥的 Linux 私房菜 -- 基礎(chǔ)學(xué)習(xí)篇目錄? 第六章、Linux 的文件權(quán)限與目錄配置 3. Linux目錄配置
Linux目錄配置的依據(jù)—FHS
Filesystem Hierarchy Standard (FHS)標準,根據(jù)FHS(http://www.pathname.com/fhs/)的官方文件指出, 他們的主要目的是希望讓使用者可以了解到已安裝軟件通常放置于那個目錄下, 所以他們希望獨立的軟件開發(fā)商、操作系統(tǒng)制作者、以及想要維護系統(tǒng)的用戶,都能夠遵循FHS的標準。
事實上,FHS是根據(jù)過去的經(jīng)驗一直再持續(xù)的改版的,FHS依據(jù)文件系統(tǒng)使用的頻繁與否與是否允許使用者隨意更動, 而將目錄定義成為四種交互作用的形態(tài),用表格來說有點像底下這樣:
| ? | 可分享的(shareable) | 不可分享的(unshareable) |
| 不變的(static) | /usr (軟件放置處) | /etc (配置文件) |
| ? | /opt (第三方協(xié)力軟件) | /boot (開機與核心檔) |
| 可變動的(variable) | /var/mail (使用者郵件信箱) | /var/run (程序相關(guān)) |
| ? | /var/spool/news (新聞組) | /var/lock (程序相關(guān)) |
上表中的目錄就是一些代表性的目錄
- 可分享的:可以分享給其他系統(tǒng)掛載使用的目錄,所以包括執(zhí)行文件與用戶的郵件等數(shù)據(jù), 是能夠分享給網(wǎng)絡(luò)上其他主機掛載用的目錄;
- 不可分享的:自己機器上面運作的裝置文件或者是與程序有關(guān)的socket文件等, 由于僅與自身機器有關(guān),所以當(dāng)然就不適合分享給其他主機了。
- 不變的:有些數(shù)據(jù)是不會經(jīng)常變動的,跟隨著distribution而不變動。 例如函式庫、文件說明文件、系統(tǒng)管理員所管理的主機服務(wù)配置文件等等;
- 可變動的:經(jīng)常改變的數(shù)據(jù),例如登錄文件、一般用戶可自行收受的新聞組等。
事實上,FHS針對目錄樹架構(gòu)僅定義出三層目錄底下應(yīng)該放置什么數(shù)據(jù)而已,分別是底下這三個目錄的定義:
- / (root, 根目錄):與開機系統(tǒng)有關(guān);
- /usr (unix software resource):與軟件安裝/執(zhí)行有關(guān);
- /var (variable):與系統(tǒng)運作過程有關(guān)。
根目錄 (/) 的意義與內(nèi)容:
根目錄是整個系統(tǒng)最重要的一個目錄,因為不但所有的目錄都是由根目錄衍生出來的, 同時根目錄也與開機/還原/系統(tǒng)修復(fù)等動作有關(guān)。 由于系統(tǒng)開機時需要特定的開機軟件、核心文件、開機所需程序、 函式庫等等文件數(shù)據(jù),若系統(tǒng)出現(xiàn)錯誤時,根目錄也必須要包含有能夠修復(fù)文件系統(tǒng)的程序才行。 因為根目錄是這么的重要,所以在FHS的要求方面,他希望根目錄不要放在非常大的分割槽內(nèi), 因為越大的分割槽妳會放入越多的數(shù)據(jù),如此一來根目錄所在分割槽就可能會有較多發(fā)生錯誤的機會。
因此FHS標準建議:根目錄(/)所在分割槽應(yīng)該越小越好, 且應(yīng)用程序所安裝的軟件最好不要與根目錄放在同一個分割槽內(nèi),保持根目錄越小越好。 如此不但效能較佳,根目錄所在的文件系統(tǒng)也較不容易發(fā)生問題。
有鑒于上述的說明,因此FHS定義出根目錄(/)底下應(yīng)該要有底下這些次目錄的存在才好:
| 目錄 | 應(yīng)放置文件內(nèi)容 |
| /bin | 系統(tǒng)有很多放置執(zhí)行文件的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin底下的指令可以被root與一般賬號所使用,主要有:cat, chmod, chown, date, mv, mkdir, cp, bash等等常用的指令。 |
| /boot | 這個目錄主要在放置開機會使用到的文件,包括Linux核心文件以及開機選單與開機所需配置文件等等。 Linux kernel常用的檔名為:vmlinuz,如果使用的是grub這個開機管理程序, 則還會存在/boot/grub/這個目錄喔! |
| /dev | 在Linux系統(tǒng)上,任何裝置與接口設(shè)備都是以文件的型態(tài)存在于這個目錄當(dāng)中的。 你只要透過存取這個目錄底下的某個文件,就等于存取某個裝置啰~ 比要重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*, /dev/hd*, /dev/sd*等等 |
| /etc | 系統(tǒng)主要的配置文件幾乎都放置在這個目錄內(nèi),例如人員的賬號密碼文件、 各種服務(wù)的啟始檔等等。一般來說,這個目錄下的各文件屬性是可以讓一般使用者查閱的, 但是只有root有權(quán)力修改。FHS建議不要放置可執(zhí)行文件(binary)在這個目錄中喔。比較重要的文件有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目錄有:
|
| /home | 這是系統(tǒng)默認的用戶家目錄(home directory)。在你新增一個一般使用者賬號時, 默認的用戶家目錄都會規(guī)范到這里來。比較重要的是,家目錄有兩種代號喔: |
| /lib | 系統(tǒng)的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫, 以及在/bin或/sbin底下的指令會呼叫的函式庫而已。 什么是函式庫呢?妳可以將他想成是『外掛』,某些指令必須要有這些『外掛』才能夠順利完成程序的執(zhí)行之意。 尤其重要的是/lib/modules/這個目錄, 因為該目錄會放置核心相關(guān)的模塊(驅(qū)動程序)喔! |
| /media | media是『媒體』的英文,顧名思義,這個/media底下放置的就是可移除的裝置啦! 包括軟盤、光盤、DVD等等裝置都暫時掛載于此。常見的檔名有:/media/floppy, /media/cdrom等等。 |
| /mnt | 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。 在古早時候,這個目錄的用途與/media相同啦!只是有了/media之后,這個目錄就用來暫時掛載用了。 |
| /opt | 這個是給第三方協(xié)力軟件放置的目錄。什么是第三方協(xié)力軟件啊? 舉例來說,KDE這個桌面管理系統(tǒng)是一個獨立的計劃,不過他可以安裝到Linux系統(tǒng)中,因此KDE的軟件就建議放置到此目錄下了。 另外,如果妳想要自行安裝額外的軟件(非原本的distribution提供的),那么也能夠?qū)⒛愕能浖惭b到這里來。 不過,以前的Linux系統(tǒng)中,我們還是習(xí)慣放置在/usr/local目錄下呢! |
| /root | 系統(tǒng)管理員(root)的家目錄。之所以放在這里,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的家目錄,所以我們會希望root的家目錄與根目錄放置在同一個分割槽中。 |
| /sbin | Linux有非常多指令是用來設(shè)定系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來『設(shè)定』系統(tǒng),其他用戶最多只能用來『查詢』而已。 放在/sbin底下的為開機過程中所需要的,里面包括了開機、修復(fù)、還原系統(tǒng)所需要的指令。 至于某些服務(wù)器軟件程序,一般則放置到/usr/sbin/當(dāng)中。至于本機自行安裝的軟件所產(chǎn)生的系統(tǒng)執(zhí)行文件(system binary), 則放置到/usr/local/sbin/當(dāng)中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
| /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ù)不可放置在此目錄啊! 因為FHS甚至建議在開機時,應(yīng)該要將/tmp下的數(shù)據(jù)都刪除唷! |
事實上FHS針對根目錄所定義的標準就僅有上面的咚咚,不過我們的Linux底下還有許多目錄你也需要了解一下的。 底下是幾個在Linux當(dāng)中也是非常重要的目錄喔:
| 目錄 | 應(yīng)放置文件內(nèi)容 |
| /lost+found | 這個目錄是使用標準的ext2/ext3文件系統(tǒng)格式才會產(chǎn)生的一個目錄,目的在于當(dāng)文件系統(tǒng)發(fā)生錯誤時, 將一些遺失的片段放置到這個目錄下。這個目錄通常會在分割槽的最頂層存在, 例如你加裝一顆硬盤于/disk中,那在這個系統(tǒng)下就會自動產(chǎn)生一個這樣的目錄『/disk/lost+found』 |
| /proc | 這個目錄本身是一個『虛擬文件系統(tǒng)(virtual filesystem)』喔!他放置的數(shù)據(jù)都是在內(nèi)存當(dāng)中, 例如系統(tǒng)核心、行程信息(process)、周邊裝置的狀態(tài)及網(wǎng)絡(luò)狀態(tài)等等。因為這個目錄下的數(shù)據(jù)都是在內(nèi)存當(dāng)中, 所以本身不占任何硬盤空間啊!比較重要的文件例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
| /sys | 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統(tǒng),主要也是記錄與核心相關(guān)的信息。 包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等等。這個目錄同樣不占硬盤容量喔! |
除了這些目錄的內(nèi)容之外,另外要注意的是,因為根目錄與開機有關(guān),開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之后才會持續(xù)的進行掛載的行為。就是因為如此,因此根目錄下與開機過程有關(guān)的目錄, 就不能夠與根目錄放到不同的分割槽去!那哪些目錄不可與根目錄分開呢?有底下這些:
- /etc:配置文件
- /bin:重要執(zhí)行檔
- /dev:所需要的裝置文件
- /lib:執(zhí)行檔所需的函式庫與核心所需的模塊
- /sbin:重要的系統(tǒng)執(zhí)行文件
/usr 的意義與內(nèi)容:
依據(jù)FHS的基本定義,/usr里面放置的數(shù)據(jù)屬于可分享的與不可變動的(shareable, static), 如果你知道如何透過網(wǎng)絡(luò)進行分割槽的掛載(例如在服務(wù)器篇會談到的NFS服務(wù)器),那么/usr確實可以分享給局域網(wǎng)絡(luò)內(nèi)的其他主機來使用喔!
很多讀者都會誤會/usr為user的縮寫,其實usr是Unix Software Resource的縮寫, 也就是『Unix操作系統(tǒng)軟件資源』所放置的目錄,而不是用戶的數(shù)據(jù)啦!這點要注意。 FHS建議所有軟件開發(fā)者,應(yīng)該將他們的數(shù)據(jù)合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目錄。
因為是所有系統(tǒng)默認的軟件(distribution發(fā)布者提供的軟件)都會放置到/usr底下,因此這個目錄有點類似Windows 系統(tǒng)的『C:\Windows\ + C:\Program files\』這兩個目錄的綜合體,系統(tǒng)剛安裝完畢時,這個目錄會占用最多的硬盤容量。 一般來說,/usr的次目錄建議有底下這些:
| 目錄 | 應(yīng)放置文件內(nèi)容 |
| /usr/X11R6/ | 為X Window System重要數(shù)據(jù)所放置的目錄,之所以取名為X11R6是因為最后的X版本為第11版,且該版的第6次釋出之意。 |
| /usr/bin/ | 絕大部分的用戶可使用指令都放在這里!請注意到他與/bin的不同之處。(是否與開機過程有關(guān)) |
| /usr/include | /c/c++等程序語言的檔頭(header)與包含檔(include)放置處,當(dāng)我們以tarball方式 (*.tar.gz 的方式安裝軟件)安裝某些數(shù)據(jù)時,會使用到里頭的許多包含檔喔! |
| /usr/lib/ | 包含各應(yīng)用軟件的函式庫、目標文件(object file),以及不被一般使用者慣用的執(zhí)行檔或腳本(script)。 某些軟件會提供一些特殊的指令來進行服務(wù)器的設(shè)定,這些指令也不會經(jīng)常被系統(tǒng)管理員操作, 那就會被擺放到這個目錄下啦。要注意的是,如果你使用的是X86_64的Linux系統(tǒng), 那可能會有/usr/lib64/目錄產(chǎn)生喔! |
| /usr/local/ | 系統(tǒng)管理員在本機自行安裝自己下載的軟件(非distribution默認提供者),建議安裝到此目錄, 這樣會比較便于管理。舉例來說,你的distribution提供的軟件較舊,你想安裝較新的軟件但又不想移除舊版, 此時你可以將新版軟件安裝于/usr/local/目錄下,可與原先的舊版軟件有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc, include, lib...的次目錄喔! |
| /usr/sbin/ | 非系統(tǒng)正常運作所需要的系統(tǒng)指令。最常見的就是某些網(wǎng)絡(luò)服務(wù)器軟件的服務(wù)指令(daemon)啰! |
| /usr/share/ | 放置共享文件的地方,在這個目錄下放置的數(shù)據(jù)幾乎是不分硬件架構(gòu)均可讀取的數(shù)據(jù), 因為幾乎都是文本文件嘛!在此目錄下常見的還有這些次目錄:
|
| /usr/src/ | 一般原始碼建議放置到這里,src有source的意思。至于核心原始碼則建議放置到/usr/src/linux/目錄下。 |
/var 的意義與內(nèi)容:
如果/usr是安裝時會占用較大硬盤容量的目錄,那么/var就是在系統(tǒng)運作后才會漸漸占用硬盤容量的目錄。 因為/var目錄主要針對常態(tài)性變動的文件,包括緩存(cache)、登錄檔(log file)以及某些軟件運作所產(chǎn)生的文件, 包括程序文件(lock file, run file),或者例如MySQL數(shù)據(jù)庫的文件等等。常見的次目錄有:
| 目錄 | 應(yīng)放置文件內(nèi)容 |
| /var/cache/ | 應(yīng)用程序本身運作過程中會產(chǎn)生的一些暫存檔; |
| /var/lib/ | 程序本身執(zhí)行的過程中,需要使用到的數(shù)據(jù)文件放置的目錄。在此目錄下各自的軟件應(yīng)該要有各自的目錄。 舉例來說,MySQL的數(shù)據(jù)庫放置到/var/lib/mysql/而rpm的數(shù)據(jù)庫則放到/var/lib/rpm去! |
| /var/lock/ | 某些裝置或者是文件資源一次只能被一個應(yīng)用程序所使用,如果同時有兩個程序使用該裝置時, 就可能產(chǎn)生一些錯誤的狀況,因此就得要將該裝置上鎖(lock),以確保該裝置只會給單一軟件所使用。 舉例來說,刻錄機正在刻錄一塊光盤,你想一下,會不會有兩個人同時在使用一個刻錄機燒片? 如果兩個人同時刻錄,那片子寫入的是誰的數(shù)據(jù)?所以當(dāng)?shù)谝粋€人在刻錄時該刻錄機就會被上鎖, 第二個人就得要該裝置被解除鎖定(就是前一個人用完了)才能夠繼續(xù)使用啰。 |
| /var/log/ | 重要到不行!這是登錄文件放置的目錄!里面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登入者的信息)等。 |
| /var/mail/ | 放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為鏈接文件啦! |
| /var/run/ | 某些程序或者是服務(wù)啟動后,會將他們的PID放置在這個目錄下喔! 至于PID的意義我們會在后續(xù)章節(jié)提到的。 |
| /var/spool/ | 這個目錄通常放置一些隊列數(shù)據(jù),所謂的『隊列』就是排隊等待其他程序使用的數(shù)據(jù)啦! 這些數(shù)據(jù)被使用后通常都會被刪除。舉例來說,系統(tǒng)收到新信會放置到/var/spool/mail/中, 但使用者收下該信件后該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出后就被刪除。如果是工作排程數(shù)據(jù)(crontab),就會被放置到/var/spool/cron/目錄中! |
建議在你讀完整個基礎(chǔ)篇之后,可以挑戰(zhàn)FHS官方英文文件(參考本節(jié)),相信會讓你對于Linux操作系統(tǒng)的目錄有更深入的了解喔!
?
看完了FHS標準之后, 對于硬盤分割,有點想法了嗎?
根據(jù)FHS的定義,最好能夠?qū)?var獨立出來, 這樣對于系統(tǒng)的數(shù)據(jù)還有一些安全性的保護呢!因為至少/var死掉時,你的根目錄還會活著嘛! 還能夠進入救援模式啊!
絕對路徑與相對路徑
除了需要特別注意的FHS目錄配置外,在文件名部分我們也要特別注意喔!因為根據(jù)檔名寫法的不同,也可將所謂的路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。 這兩種文件名/路徑的寫法依據(jù)是這樣的:
- 絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱, 例如 /home/dmtsai/.bashrc;
- 相對路徑:相對于目前路徑的文件名寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 / 就屬于相對路徑的寫法
而你必須要了解,相對路徑是以『你當(dāng)前所在路徑的相對位置』來表示的。舉例來說,你目前在 /home 這個目錄下, 如果想要進入 /var/log 這個目錄時,可以怎么寫呢?
因為你在 /home 底下,所以要回到上一層 (../) 之后,才能繼續(xù)往 /var 來移動的! 特別注意這兩個特殊的目錄:
- .? :代表當(dāng)前的目錄,也可以使用 ./ 來表示;
- .. :代表上一層目錄,也可以 ../ 來代表。
這個 . 與 .. 目錄概念是很重要的,你常常會看到 cd .. 或 ./command 之類的指令下達方式, 就是代表上一層與目前所在目錄的工作狀態(tài)喔!很重要的吶!
轉(zhuǎn)載于:https://www.cnblogs.com/ysztcn/p/4166573.html
總結(jié)
以上是生活随笔為你收集整理的CentOS学习笔记--目录配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言编写Windows服务程序
- 下一篇: 修改android virtual de