了解Linux的配置文件、可執(zhí)行文件、每個目錄內(nèi)放置的內(nèi)容。
1. Linux目錄配置的依據(jù)--FHS
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統(tǒng)層次結構標準),重點規(guī)范每個目錄下放置什么數(shù)據(jù),軟件安
裝在哪個目錄下。
FHS依據(jù)文件系統(tǒng)使用的頻繁與否與
是否允許使用者隨意更動, 而將目錄定義成為四種交互作用的形態(tài)

FHS針對目錄樹架構僅定義出三層目錄下面應該放置什么數(shù)據(jù)而已,分別是下面這三個目錄的定義:
- /(root, 根目錄):與開機系統(tǒng)有關;
- /usr(unix software resource):與軟件安裝/執(zhí)行有關;
- /var(variable):與系統(tǒng)運行過程有關。
1.1 根目錄(/)的意義與內(nèi)容:
系統(tǒng)最重要的目錄,不但所有的目錄都是由根目錄衍生出來,同時根目錄也與開機/還原/系統(tǒng)修復等動作有關。由于要目錄包含了太多的文件數(shù)據(jù),放在非常大的分區(qū)內(nèi)容易發(fā)生錯誤。
因此FHS標準建議:根目錄(/)所在分區(qū)應該越小越好, 且應用程序所安裝的軟件最好不要
與根目錄放在同一個分區(qū)內(nèi),保持根目錄越小越好。FHS定義出根目錄(/)下面應該要有下面這些次目錄的存在才好,即使沒有實體目錄,F(xiàn)HS也希望至少有鏈接文件存在才好:
| 目錄 | 應放置文件內(nèi)容 |
|---|---|
| 第一部分:FHS要求必須存在的目錄 | |
| /bin | 系統(tǒng)有很多放置可執(zhí)行文件的目錄,但/bin比較特殊。因為/bin放置的是在單人維護模式下還能夠被操作的指令。 在/bin下面的指令可以被root與一般帳號所使用,主要有:cat, chmod, chown, date, mv , mkdir , cp, bash等等常用的指令。 |
| /boot | 這個目錄主要在放置開機會使用到的文件,包括Linux核心文件以及開機菜單與開機所需配置文件等等。 Linux kernel常用的文件名為:vmlinuz,如果使用的是grub2這個開機管理程序, 則還會存在/boot/grub2/這個目錄喔! |
| /dev | 在Linux系統(tǒng)上,任何設備與周邊設備都是以文件的型態(tài)存在于這個目錄當中的。 你只要通過存取這個目錄下面的某個文件,就等于存取某個設備啰~比要重要的文件有/dev/null, /dev/zero, /dev/tty , /dev/loop, /dev/sd等等 |
| /etc | 系統(tǒng)主要的配置文件幾乎都放置在這個目錄內(nèi),例如人員的帳號密碼檔、各種服務的啟始檔等等。一般來說,這個目錄下的各文件屬性是可以讓一般使用者查閱的, 但是只有root有權力修改。FHS建議不要放置可可執(zhí)行文件(binary)在這個目錄中喔。比較重要的文件有: /etc/modprobe.d/,/etc/passwd, /etc/fstab, /etc/issue 等等。另外 FHS 還規(guī)范幾個重要的目錄最好要存在 /etc/ 目錄下喔:/etc/opt(必要):這個目錄在放置第三方協(xié)力軟件 /opt 的相關配置文件 /etc/X1 1/(建議):與 X Window 有關的各種配置文件都在這里,尤其是 xorg.conf 這個 X Server 的配置文件。 /etc/sgml/(建議):與 SGML 格式有關的各項配置文件 /etc/xml/(建議):與 XML格式有關的各項配置文件 |
| /lib | 系統(tǒng)的函數(shù)庫非常的多,而/lib放置的則是在開機時會用到的函數(shù)庫, 以及在/bin或/sbin下面的指令會調用的函數(shù)庫而已。 什么是函數(shù)庫呢?你可以將他想成是“外掛”,某些指令必須要有這些“外掛”才能夠順利完成程序的執(zhí)行之意。 另外 FSH 還要求下面的目錄必須要存:/lib/modules/:這個目錄主要放置可抽換式的核心相關模塊(驅動程序)喔! |
| /media | media是“媒體”的英文,顧名思義,這個/media下面放置的就是可移除的設備啦! 包括軟盤、光盤、DVD等等設備都暫時掛載于此。常見的文件名有:/media/floppy , /media/cdrom等等。 |
| /mnt | 如果你想要暫時掛載某些額外的設備,一般建議你可以放置到這個目錄中。在古早時候,這個目錄的用途與/media相同啦!只是有了/media之后,這個目錄就用來暫時掛載用了。 |
| /opt | 這個是給第三方協(xié)力軟件放置的目錄。什么是第三方協(xié)力軟件??? 舉例來說,KDE這個桌面管理系統(tǒng)是一個獨立的計劃,不過他可以安裝到Linux系統(tǒng)中,因此KDE的軟件就建議放置到此目錄下了。 另外,如果你想要自行安裝額外的軟件(非原本的distribution提供的),那么也能夠將你的軟件安裝到這里來。 不過,以前的Linux系統(tǒng)中,我們還是習慣放置在/usr/local目錄下呢! |
| /run | 早期的 FHS 規(guī)定系統(tǒng)開機后所產(chǎn)生的各項信息應該要放置到 /var/run 目錄下,新版的 FHS 則規(guī)范到 /run 下面。 由于 /run 可以使用內(nèi)存來仿真,因此性能上會好很多! |
| /sbin | Linux有非常多指令是用來設置系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來“設置”系統(tǒng),其他使用者最多只能用來“查詢”而已。 放在/sbin下面的為開機過程中所需要的,里面包括了開機、修復、還原系統(tǒng)所需要的指令。 至于某些服務器軟件程序,一般則放置到/usr/sbin/當中。至于本機自行安裝的軟件所產(chǎn)生的系統(tǒng)可執(zhí)行文件(system binary), 則放置到/usr/local/sbin/當中了。常見的指令包括:fdisk, fsck, ifconfig, mkfs等等。 |
| /srv | srv可以視為“service”的縮寫,是一些網(wǎng)絡服務啟動之后,這些服務所需要取用的數(shù)據(jù)目錄。 常見的服務例如WWW, FTP等等。舉例來說,WWW服務器需要的網(wǎng)頁數(shù)據(jù)就可以放置在/srv/www/里面。 不過,系統(tǒng)的服務數(shù)據(jù)如果尚未要提供給網(wǎng)際網(wǎng)絡任何人瀏覽的話,默認還是建議放置到 /var/lib下面即可。 |
| /tmp | 這是讓一般使用者或者是正在執(zhí)行的程序暫時放置文件的地方。 這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。當然,重要數(shù)據(jù)不可放置在此目錄?。? 因為FHS甚至建議在開機時,應該要將/tmp下的數(shù)據(jù)都刪除唷! |
| /usr | 第二層 FHS 設置,后續(xù)介紹 |
| /var | 第二曾 FHS 設置,主要為放置變動性的數(shù)據(jù),后續(xù)介紹 |
| 第二部份:FHS建議可以存在的目錄 | |
| / home | 這是系統(tǒng)默認的使用者主文件夾(home directory)。在你新增一個一般使用者帳號時, 默認的使用者主文件夾都會規(guī)范到這里來。比較重要的是,主文件夾有兩種代號喔:~:代表目前這個使用者的主文件夾 ~dmtsai :則代表 dmtsai 的主文件夾! |
| /lib<qual> | 用來存放與 /lib 不同的格式的二進制函數(shù)庫,例如支持 64 位的 /lib64 函數(shù)庫等 |
| /root | 系統(tǒng)管理員(root)的主文件夾。之所以放在這里,是因為如果進入單人維護模式而僅掛載根目錄時, 該目錄就能夠擁有root的主文件夾,所以我們會希望root的主文件夾與根目錄放置在同一個分區(qū)中。 |
FHS針對根目錄所定義的標準就僅有上面的咚咚,另我們的Linux下面還有許多目錄也非常重要:
| 目錄 | 應放置文件內(nèi)容 |
|---|---|
| /lost+found | 這個目錄是使用標準的ext2/ext3/ext4文件系統(tǒng)格式才會產(chǎn)生的一個目錄,目的在于當文件系統(tǒng)發(fā)生錯誤時, 將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 文件系統(tǒng)的話,就不會存在這個目錄了! |
| proc | 這個目錄本身是一個“虛擬文件系統(tǒng)(virtual filesystem)”喔!他放置的數(shù)據(jù)都是在內(nèi)存當中, 例如系統(tǒng)核心、行程信息(process)、周邊設備的狀態(tài)及網(wǎng)絡狀態(tài)等等。因為這個目錄下的數(shù)據(jù)都是在內(nèi)存當中, 所以本身不占任何硬盤空間啊!比較重要的文件例如:/proc/cpuinfo, /proc/dma,/proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
| sys | 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統(tǒng),主要也是記錄核心與系統(tǒng)硬件信息較相關的信息。 包括目前已載入的核心模塊與核心偵測到的硬件設備信息等等。這個目錄同樣不占硬盤容量喔! |
早期的五個重要的目錄(/etc, /bin, /dev , /lib, /sbin)被要求一定要與根目錄放置在一起,現(xiàn)在許多的 Linux distributions 由于已經(jīng)將許多非必要的文件移出 /usr 之外了,通通移動到/usr下面了!
1.2 /usr 的意義與內(nèi)容:
usr是Unix Software Resource的縮寫, 也就是“Unix操作系統(tǒng)軟件資源”所放置的目錄。FHS建議所有軟件開發(fā)者,應該將他們的數(shù)據(jù)合理的分別放置到這個目錄下的次目錄,而不要自行創(chuàng)建該軟件自己獨立的目錄。
因為是所有系統(tǒng)默認的軟件(distribution發(fā)布者提供的軟件)都會放置到/usr下面,因此這個
目錄有點類似Windows 系統(tǒng)的“C:\Windows\ (當中的一部份) + C:\Program files\”這兩個目
錄的綜合體,系統(tǒng)剛安裝完畢時,這個目錄會占用最多的硬盤容量。一般來說,/usr的次目錄
建議有下面這些:
| 目錄 | 應放置文件內(nèi)容 |
|---|---|
| 第一部份:FHS 要求必須要存在的目錄 | |
| /usr/bin/ | 所有一般用戶能夠使用的指令都放在這里!目前新的 CentOS 7 已經(jīng)將全部的使用者指令放置于此,而使用鏈接文件的方式將 /bin 鏈接至此!也就是說, /usr/bin 與 /bin 是一模一樣了!另外,F(xiàn)HS 要求在此目錄下不應該有子目錄! |
| /usr/lib/ | 基本上,與 /lib 功能相同,所以 /lib 就是鏈接到此目錄中的! |
| /usr/local/ | 系統(tǒng)管理員在本機自行安裝自己下載的軟件(非distribution默認提供者),建議安裝到此目錄, 這樣會比較便于管理。舉例來說,你的distribution提供的軟件較舊,你想安裝較新的軟件但又不想移除舊版,此時你可以將新版軟件安裝于/usr/local/目錄下,可與原先的舊版軟件有分別啦! 你可以自行到/usr/local去看看,該目錄下也是具有bin, etc,include, lib...的次目錄喔! |
| /usr/sbin | 非系統(tǒng)正常運行所需要的系統(tǒng)指令。最常見的就是某些網(wǎng)絡服務器軟件的服務指令(daemon)啰!不過基本功能與 /sbin 也差不多, 因此目前 /sbin 就是鏈接到此目錄中的。 |
| /usr/share | 主要放置只讀架構的數(shù)據(jù)文件,當然也包括共享文件。在這個目錄下放置的數(shù)據(jù)幾乎是不分硬件架構均可讀取的數(shù)據(jù), 因為幾乎都是文字文件嘛!在此目錄下常見的還有這些次目錄:/usr/share/man:線上說明文檔 /usr/share/doc:軟件雜項的文件說明 /usr/share/zoneinfo:與時區(qū)有關的時區(qū)文件 |
| 第二部份:FHS 建議可以存在的目錄 | |
| /usr/games/ | 與游戲比較相關的數(shù)據(jù)放置處 |
| /usr/include/ | c/c++等程序語言的文件開始(header)與包含檔(include)放置處,當我們以tarball方式 (*.tar .gz 的方式安裝軟件)安裝某些數(shù)據(jù)時,會使用到里頭的許多包含檔喔! |
| /usr/libexec/ | 某些不被一般使用者慣用的可執(zhí)行文件或腳本(script)等等,都會放置在此目錄中。例如大部分的 X 窗口下面的操作指令, 很多都是放在此目錄下的。 |
| /usr/lib<qual>/ | 與 /lib<qual>/功能相同,因此目前 /lib<qual> 就是鏈接到此目錄中 |
| /usr/src/ | 一般源代碼建議放置到這里,src有source的意思。至于核心源代碼則建議放置到/usr/src/linux/目錄下。 |
1.3 /var 的意義與內(nèi)容:
/usr是安裝時會占用較大硬盤容量的目錄,/var就是在系統(tǒng)運行后才會漸漸占用硬盤容量的目錄。 因為/var目錄主要針對常態(tài)性變動的文件,包括高速緩存(cache)、登錄文件(log file)以及某些軟件運行所產(chǎn)生的文件, 包括程序文件(lock file, run file),或者例如MySQL數(shù)據(jù)庫的文件等等。常見的次目錄有:
| 目錄 | 應放置的文件 |
|---|---|
| /var/cache | 應用程序本身運行過程中會產(chǎn)生的一些暫存盤; |
| /var/lib/ | 程序本身執(zhí)行的過程中,需要使用到的數(shù)據(jù)文件放置的目錄。在此目錄下各自的軟件應該要有各自的目錄。 舉例來說,MySQL的數(shù)據(jù)庫放置到/var/lib/mysql/而rpm的數(shù)據(jù)庫則放到/var/lib/rpm去! |
| /var/lock/ | 某些設備或者是文件資源一次只能被一個應用程序所使用,如果同時有兩個程序使用該設備時, 就可能產(chǎn)生一些錯誤的狀況,因此就得要將該設備上鎖(lock),以確保該設備只會給單一軟件所使用。 舉例來說,燒錄機正在燒錄一塊光盤,你想一下,會不會有兩個人同時在使用一個燒錄機燒片? 如果兩個人同時燒錄,那片子寫入的是誰的數(shù)據(jù)?所以當?shù)谝粋€人在燒錄時該燒錄機就會被上鎖, 第二個人就得要該設備被解除鎖定(就是前一個人用完了)才能夠繼續(xù)使用啰。目前此目錄也已經(jīng)挪到 /run/lock 中! |
| /var/log/ | 重要到不行!這是登錄文件放置的目錄!里面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登陸者的信息)等。 |
| /var/mail/ | 放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中! 通常這兩個目錄是互為鏈接文件啦! |
| /var/run/ | 某些程序或者是服務啟動后,會將他們的PID放置在這個目錄下喔!至于PID的意義我們會在后續(xù)章節(jié)提到的。 與 /run 相同,這個目錄鏈接到 /run去了! |
| /var/spool/ | 這個目錄通常放置一些佇列數(shù)據(jù),所謂的“佇列”就是排隊等待其他程序使用的數(shù)據(jù)啦! 這些數(shù)據(jù)被使用后通常都會被刪除。舉例來說,系統(tǒng)收到新信會放置到/var/spool/mail/中, 但使用者收下該信件后該封信原則上就會被刪除。信件如果暫時寄不出去會被放到/var/spool/mqueue/中, 等到被送出后就被刪除。如果是工作調度數(shù)據(jù)(crontab),就會被放置到/var/spool/cron/目錄中! |
1.4Linux同舊版的差異
Linux目前比較大的差異在于將許多原本應該要在根目錄(/)里面的目錄,將他內(nèi)部數(shù)據(jù)全部挪到 /usr 里面去,然后進行鏈接設置!包括下面這些:
- /bin --> /usr/bin
- /sbin --> /usr/sbin
- /lib --> /usr/lib
- /lib64 --> /usr/lib64
- /var/lock --> /run/lock
- /var/run --> /run
2 目錄樹
在Linux下面,所有的文件與目錄都是由根目錄開始的,是所有目錄與文件的源頭 ~這種目錄樹的特性有:
- 目錄樹啟始點為根目錄
- 每一個目錄不止能使用本地端的 partition 的文件系統(tǒng),也可以使用網(wǎng)絡上的filesystem。舉例來說, 可以利用 Network File System(NFS)服務器掛載某特定目錄等。
- 每一個文件在此目錄樹中的文件名(包含完整路徑)都是獨一無二的。
使用ls -l /來查看根目錄下面

圖示

明白了FHS標準之后,有助于我們更好的分區(qū)。例如將/var獨立出來,這樣對系統(tǒng)的數(shù)據(jù)有一些安全性的保護,至少/var死掉時,你的根目錄還活著,還能進入救援模式!
3 絕對路徑與相對路徑
根據(jù)文件名寫法不同,可將路徑分為兩種:
- 絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱, 例如 /home/uname/.bashrc;
- 相對路徑:相對于目前路徑的文件名寫法。 例如 ./home/uname或 ../../home/uname/ 等等。反正開頭不是 / 就屬于相對路徑的寫法
相對路徑是以“你當前所在路徑的相對位置”來表示的.
特別注意這兩個特殊的目錄:
- .:代表當前的目錄,也可以使用 ./ 來表示;
- ..:代表上一層目錄,也可以 ../ 來代表。