概述
多數(shù)Linux發(fā)行版本都是遵循文件系統(tǒng)結(jié)構(gòu)標(biāo)準(zhǔn)(Filesystem Hierarchy Standard, 簡稱FHS),可以在這里找到該標(biāo)準(zhǔn)。本文對Linux的文件系統(tǒng)結(jié)構(gòu)進(jìn)行簡單的介紹。
根目錄/
所有的Linux系統(tǒng)都有根目錄,由/表示。Linux系統(tǒng)的所有內(nèi)容都在該目錄下。
二進(jìn)制目錄
| 目錄 | 說明 |
|---|---|
| /bin | 包括了可執(zhí)行的二進(jìn)制文件,通常這些二進(jìn)制文件可以被所有用戶訪問。FHS規(guī)定,該目錄至少包括/bin/cat跟/bin/date文件 |
| /sbin | 包括了系統(tǒng)的二進(jìn)制文件,通過需要root權(quán)限,用來配置系統(tǒng) |
| /lib | 包括了/bin所依賴的庫 |
| /lib/modules | Linux將從/lib/modules/$kernel-version/目錄下載入內(nèi)核模塊 |
| /lib32和/lib64 | 顧名思義,分別存放不同位數(shù)的庫 |
| /opt | 該目錄用來存放一些可選的軟件,通常情況下,很多第三方的客戶軟件會(huì)選擇安裝在該目錄下 |
配置文件目錄
| 目錄 | 說明 |
|---|---|
| /boot | 顧名思義,用來存放系統(tǒng)啟動(dòng)的配置文件,如grub引導(dǎo)的配置文件/boot/grub/grub.cfg
|
| /etc | 幾乎大部分配置文件都放在改目錄下。歷史上etc的全稱是etcetera,不過,現(xiàn)在一般認(rèn)為是Editable Text Configuration的縮寫 |
| /etc/init.d | 存放daemon啟動(dòng)、停止等的腳本文件。不過在引入systemd之后,啟動(dòng)腳本有所變化 |
| /etc/skel | 存放創(chuàng)建新用戶之后所需的配置文件的模板,如.bashrc文件,默認(rèn)會(huì)從該目錄拷貝到用戶目錄 |
| /etc/sysconfig | 一般出現(xiàn)在RedHat系列的Linux系統(tǒng)中,存放系統(tǒng)有關(guān)配置,如IP的配置文件等 |
數(shù)據(jù)目錄
| 目錄 | 說明 |
|---|---|
| /home | 當(dāng)創(chuàng)建一個(gè)新用戶的時(shí)候,默認(rèn)情況下,系統(tǒng)會(huì)為用戶創(chuàng)建一個(gè)/home/<username>的目錄用來存放個(gè)人數(shù)據(jù)。 |
| /root | 該目錄被很多Linux系統(tǒng)用來存放root用戶的個(gè)人數(shù)據(jù) |
| /srv | 可以被解釋為served by your system。FHS允許rsync,ftp,www等數(shù)據(jù)存放在改目錄 |
| /media | 該目錄通常被用來掛載可移除設(shè)備,如CD-ROM,U盤等 |
| /mnt | 根據(jù)FHS,該目錄通常被用來作為短期的掛載點(diǎn) |
| /tmp | 該目錄用來存放一些短期的文件,不要再該目錄下存放重要文件,該目錄下的文件有可能會(huì)被系統(tǒng)回收 |
內(nèi)存目錄
Linux系統(tǒng)中,幾乎所有的東西都被映射成文件,文件有的是對應(yīng)著硬盤、設(shè)備(CD-ROM等)等,有的則被Linux映射到內(nèi)存中。這一節(jié)介紹映射到內(nèi)存中的目錄。
/dev目錄
/dev目錄映射了各種設(shè)備文件,這些文件由系統(tǒng)啟動(dòng)的時(shí)候掃描硬件生成。
物理設(shè)備文件
物理設(shè)備包括很多種,如硬盤,CD-ROM等。不同的物理設(shè)備映射為/dev目錄下不同的文件。如SATA/SCSI設(shè)備或USB通常被映射為/dev/sd*,其中*可以為[a-z]中的任意字符;而IDE設(shè)備通常被映射為/dev/hd*,其中*為[a-z]中任意字符。
/dev/tty跟/dev/pts
首先需要搞清楚tty設(shè)備跟pts設(shè)備的區(qū)別。這兩者都是終端設(shè)備,所謂終端設(shè)備通常指的是能夠接受命令輸入,并可能同時(shí)能夠輸出的設(shè)備,但是這兩者是有本質(zhì)的不同的:
-
tty設(shè)備
tty是Teletype的簡稱,表示原生的終端設(shè)備,通常指的是物理終端設(shè)備如串口,鍵鼠接口等,以及系統(tǒng)內(nèi)核模擬的終端設(shè)備。 -
pts設(shè)備
pts是Pseudo Terminal Slave的簡稱,表示偽終端設(shè)備,通常由應(yīng)用進(jìn)程模擬出來,如ssh開啟的終端等。
tty設(shè)備通常被映射為/dev/tty*,其中*代表數(shù)字,如/dev/tty1等。而pts設(shè)備被映射為/dev/pts/*,其中*表示數(shù)字,如/dev/pts/1。
/dev/null
該文件在Linux中有著特殊的意義,是一個(gè)只有輸入的文件,且文件有無限的大小,你不能從該文件讀出任何東西,任何寫入的內(nèi)容邏輯上相當(dāng)于消失了。從實(shí)現(xiàn)的角度,實(shí)際上任何寫入的內(nèi)容都被系統(tǒng)丟棄了。
/proc目錄
該目錄用來記錄內(nèi)核以及內(nèi)核進(jìn)程的實(shí)時(shí)信息,可以通過它輕而易舉的實(shí)現(xiàn)對內(nèi)核狀態(tài)的獲取甚至改變。
| 目錄 | 說明 |
|---|---|
| /proc/<id> | 幾乎每個(gè)進(jìn)程都會(huì)在該目錄下有映射的文件/proc/*,其中<id>代表進(jìn)程的ID。該目錄記錄的該進(jìn)程的幾乎所有的狀態(tài)信息。 |
| /proc/cpuinfo | 記錄了系統(tǒng)的CPU信息,通常通過該文件可以知道系統(tǒng)有多少個(gè)CPU(核數(shù))。 |
| /proc/meminfo | 記錄了系統(tǒng)的內(nèi)存信息,可以通過它知道系統(tǒng)有多少內(nèi)存 |
| /proc/sys | 在/proc目錄下的絕大部分文件都是只讀的文件,但是在該目錄下有些文件是可寫的,可以通過它們改變內(nèi)核狀態(tài) |
| /proc/interrupts | 記錄了當(dāng)前系統(tǒng)的中斷信息 |
| /proc/kcore | 這個(gè)文件代表了系統(tǒng)的物理內(nèi)存,其大小就是物理內(nèi)存的大小,因此千萬不要用cat來試圖顯示該文件內(nèi)容 |
/usr目錄
/usr目錄估計(jì)是被誤解最多的目錄,一般大家都以為它是user的簡寫,感覺應(yīng)該存放的是用戶相關(guān)的東西,但是實(shí)際上完全不是這樣。它其實(shí)是Unix System Resources的簡寫,表示Unix系統(tǒng)資源。通常情況下,該目錄以只讀的權(quán)限被掛載。
| 目錄 | 說明 |
|---|---|
| /usr/bin | 很多命令都存放在這個(gè)目錄下面,事實(shí)上,在Centos跟Solaris系統(tǒng)中,/bin目錄實(shí)際上只是一個(gè)軟連接,連接到此目錄 |
| /usr/include | 存放大量的頭文件,可能會(huì)被C代碼引用 |
| /usr/lib | 存放庫文件,同樣,在Centos跟Solaris系統(tǒng)中,/lib其實(shí)就是軟連接到此目錄 |
| /usr/lib64 | 存放64位的庫文件,在Centos中,/lib64也是軟連接到此目錄 |
| /usr/sbin | 很多daemon程序都是放在此目錄下,在Centos中,/sbin也是軟連接到此目錄 |
| /usr/local | 此目錄通常用來安裝一些本地的應(yīng)用 |
| /usr/share | 此目錄通常用來存放各種體系無關(guān)的數(shù)據(jù)。/usr/share/man就是用來存放man命令用到的幫助文檔 |
| /usr/src | 此目錄通常存放內(nèi)核的代碼文件 |
/var目錄
/var目錄用來存放可變的數(shù)據(jù),如日志,數(shù)據(jù)庫文件等。
| 目錄 | 說明 |
|---|---|
| /var/log | 此目錄用來存放各種日志文件,包括系統(tǒng)跟應(yīng)用的日志 |
| /var/log/messages | 在RedHat系列系統(tǒng)中,此文件用來記錄系統(tǒng)剛剛發(fā)生的事情。在Debian和Ubuntu系統(tǒng)中,對應(yīng)的文件是/var/log/syslog
|
| /var/cache | 此目錄存放很多應(yīng)用的緩存數(shù)據(jù),如yum命令可能會(huì)緩存部分?jǐn)?shù)據(jù)在此目錄 |
| /var/spool | 一般情況下,該目錄會(huì)存放郵件cron任務(wù)等數(shù)據(jù) |
| /var/lib | 通常此目錄下會(huì)存放應(yīng)用的狀態(tài)信息,如/var/lib/mysql存放mysql數(shù)據(jù)庫,/var/lib/docker存放docker的數(shù)據(jù) |
本博文還可以在博主個(gè)人主頁中找到。