對于linux系統(tǒng),我們進(jìn)入到根目錄/并列出根目錄下所有文件可以看到:
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
這些似懂非懂的目錄名都有什么含義呢?
FHS標(biāo)準(zhǔn)
其實,linux系統(tǒng)的目錄都遵循一個標(biāo)準(zhǔn),即由Linux基金會發(fā)布的 文件系統(tǒng)層次結(jié)構(gòu)標(biāo)準(zhǔn) (Filesystem Hierarchy Standard, FHS)。這個標(biāo)準(zhǔn)里面定義了linux系統(tǒng)該有哪些目錄,各個目錄應(yīng)該存放什么,起什么作用等等。具體說明如下:
| 目錄 | 解釋 |
|---|---|
| /bin | binary,即用來存放二進(jìn)制可執(zhí)行文件,并且比較特殊的是/bin里存放的是所有一般用戶都能使用的可執(zhí)行文件,如:cat, chmod, chown, mv, mkdir, cd 等常用指令 |
| /boot | 存放開機時用到的引導(dǎo)文件 |
| /dev | device(并不是develop哦),任何設(shè)備都以文件的形式存放在這個目錄中 |
| /etc | Editable Text Configuration(早期含義為etcetera,但是有爭議),存放系統(tǒng)配置文件,如各種服務(wù)的啟動配置,賬號密碼等 |
| /home | 用戶的主目錄,每當(dāng)新建一個用戶系統(tǒng)都會在這個目錄下創(chuàng)建以該用戶名為名稱的目錄作為該用戶的主目錄。并且在命令行中~代表當(dāng)前用戶的主目錄,~yousiku表示yousiku這個用戶的主目錄 |
| /lib | library,存放著系統(tǒng)開機時所需的函數(shù)庫以及/bin和/sbin目錄下的命令會調(diào)用的函數(shù)庫 |
| /lib64 | 存放相對于/lib中支持64位格式的函數(shù)庫 |
| /media | 可移除的媒體設(shè)備,如光盤,DVD等 |
| /mnt | mount,臨時掛載的設(shè)備文件 |
| /opt | optional,可選的軟件包,即第三方軟件。我們可以將除了系統(tǒng)自帶軟件之外的其他軟件安裝到這個目錄下 |
| /proc | process,該目錄是一個虛擬文件系統(tǒng),即該目錄的內(nèi)容存放于內(nèi)存中而不是硬盤中,存放著系統(tǒng)內(nèi)核以及進(jìn)程的運行狀態(tài)信息 |
| /root | 超級管理員root的主目錄 |
| /run | 最近一次開機后所產(chǎn)生的各項信息,如當(dāng)前的用戶和正在運行中的守護(hù)進(jìn)程等 |
| /sbin | 存放一些只有root賬戶才有權(quán)限執(zhí)行的可執(zhí)行文件,如init, ip, mount等命令 |
| /srv | service,存放一些服務(wù)啟動后所需的數(shù)據(jù) |
| /sys | system,與/proc類似也是一個虛擬文件系統(tǒng),存放系統(tǒng)核心與硬件相關(guān)的信息 |
| /tmp | temporary,存放臨時文件,可以被所有用戶訪問,系統(tǒng)重啟時會清空該目錄 |
| /usr | Unix Software Resource(并不是指user哦),存放著所有用戶的絕大多數(shù)工具和應(yīng)用程序(下文詳細(xì)介紹) |
| /var | variable,存放動態(tài)文件,如系統(tǒng)日志,程序緩存等(下文詳細(xì)介紹) |
/usr目錄
Unix Software Resource 意為 Unix系統(tǒng)軟件資源,系統(tǒng)自帶的軟件都裝在這個目錄下(好比Windows系統(tǒng)的"C:\Windows"),用戶安裝的第三方軟件也在這個目錄下(好比Windows系統(tǒng)的"C:\Program Files"),不同的是,在Windows系統(tǒng)上安裝軟件通常將該軟件的所有文件放置在同一個目錄下,但是在Linux系統(tǒng)安裝軟件會將該軟件的不同文件分別放置在/usr目錄下的不同子目錄下,而不應(yīng)該自行創(chuàng)建該軟件自己的獨立目錄。進(jìn)入到/usr目錄,一般有以下子目錄:
[root@localhost /]# cd usr/
[root@localhost usr]# ls
bin etc games include lib lib64 libexec local sbin share src tmp
| 目錄 | 含義 |
|---|---|
| /usr/bin | 即/bin,用鏈接文件到方式將/bin鏈接至此 |
| /usr/etc | 應(yīng)用程序的配置文件 |
| /usr/games | 與游戲相關(guān)的數(shù)據(jù) |
| /usr/include | c/c++程序的頭文件 |
| /usr/lib | 即/lib,用鏈接文件到方式將/lib鏈接至此 |
| /usr/lib64 | 即/lib64,用鏈接文件到方式將/lib64鏈接至此 |
| /usr/libexec | 不常用的執(zhí)行文件或腳本 |
| /usr/local | 應(yīng)用程序的安裝目錄,每個應(yīng)用程序目錄下還會有對應(yīng)的bin, etc, lib等目錄 |
| /usr/sbin | 即/sbin,用鏈接文件到方式將/sbin鏈接至此 |
| /usr/share | 共享文件,通常是一些文字說明文件,如軟件文檔等 |
| /usr/src | source,應(yīng)用程序源代碼 |
| /usr/tmp | 應(yīng)用程序臨時文件 |
/var
/var主要存放一些動態(tài)文件,比如程序緩存,登陸文件,程序運行所產(chǎn)生的文件等,常見的子目錄有:
[root@localhost usr]# cd /var
[root@localhost var]# ls
adm crash empty gopher lib lock mail opt run tmp
cache db games kerberos local log nis preserve spool yp
| 目錄 | 含義 |
|---|---|
| /var/cache | 應(yīng)用程序緩存 |
| /var/lib | 應(yīng)用層序運行所需的數(shù)據(jù)文件,在這個目錄下各自的程序應(yīng)該要有各自的目錄 |
| /var/lock | 文件鎖,使某些文件資源一次只能被一個應(yīng)用程序使用 |
| /var/log | 日志文件 |
| /var/run | 進(jìn)程或服務(wù)PID |
| /var/spool | 隊列數(shù)據(jù),即等待處理的任務(wù),如發(fā)送信息若發(fā)送失敗則先存放至此,等發(fā)送成功后就被刪除 |
一般來說,我們在Linux上管理文件與目錄時只要記住大概的FHS標(biāo)準(zhǔn)定義下必須存在的目錄以及目錄含義,對于標(biāo)準(zhǔn)約束外的目錄我們就可以自行配置啦
目錄結(jié)構(gòu)思維導(dǎo)圖

Linux各目錄含義.png