Linux FHS结构
FHS是Filesystem Hierarchy Standard(文件系統(tǒng)層次化標準)的縮寫,多數(shù)Linux版本采用這種文件組織形式,類似于Windows操作系統(tǒng)中c盤的文件目錄,FHS采用樹形結(jié)構(gòu)組織文件。FHS定義了系統(tǒng)中每個區(qū)域的用途、所需要的最小構(gòu)成的文件和目錄,同時還給出了例外處理與矛盾處理。
FHS_2.3標準文檔:https://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.pdf
定義
FHS定義了兩層規(guī)范。
第一層是, / 下面的各個目錄應(yīng)該要放什么文件數(shù)據(jù),例如/etc應(yīng)該要放置設(shè)置文件,/bin與/sbin則應(yīng)該要放置可執(zhí)行文件等等。因為Linux的開發(fā)人員實在太多了,如果每個人都使用自己的目錄配置方法,那么將可能會帶來很多管理問題。你能想象,你進入一個企業(yè)之后,所接觸到的Linux目錄配置方法竟然跟你以前學(xué)的完全不同嗎?很難想象。所以,后來就有所謂的文件系統(tǒng)層次標準(Filesystem Hierarchy?Standard,FHS)出臺。
第二層則是針對/usr及/var這兩個目錄的子目錄來定義。例如/var/log放置系統(tǒng)登錄文件、/usr/share放置共享數(shù)據(jù)等等。
特點介紹
由于FHS僅是定義出最上層(/)及子層(/usr, /var)的目錄內(nèi)容應(yīng)該要放置的文件數(shù)據(jù),因此,在其他子目錄層級內(nèi),就可以隨開發(fā)人員自行配置了。舉例來說,FC4的網(wǎng)絡(luò)設(shè)置數(shù)據(jù)放在/etc/sysconfig/network-script/目錄下,但SuSE Server 9則是將網(wǎng)絡(luò)放在/etc/sysconfig/network/目錄下,目錄名稱是不同的。
另外,在Linux中,所有的文件與目錄都由根目錄/ 開始。那是所有目錄與文件的源頭。然后再一個一個分支下來,有點像樹狀。因此,我們也稱這種目錄配置方式為:“目錄樹(directory tree)”。這個目錄樹主要特性有:
目錄樹的起始點為根目錄(/, root)。需要為根目錄單獨創(chuàng)建一個分區(qū),即根分區(qū)(相當于C盤(系統(tǒng)盤))。
每一個目錄不僅能使用本地端分區(qū)的文件系統(tǒng),也可以使用網(wǎng)絡(luò)上的文件系統(tǒng)。舉例來說,可以利用網(wǎng)絡(luò)文件系統(tǒng)(Network File System,NFS)服務(wù)器載入某特定目錄等。
每一個文件在此目錄樹中的文件名(包含完整路徑)都是獨一無二的。
此外,根據(jù)文件名寫法的不同,也可將路徑(path)定義為絕對路徑(absolute)與相對路徑(relative)。
絕對路徑為:由根目錄(/)開始寫起的文件名或目錄名稱,例如/home/dmtsai/.bashrc;
相對路徑為相對于當前路徑的文件名寫法。例如./home/dmtsai或../../home/dmtsai/等等。
反正開頭不是/ 就屬于相對路徑的寫法。必須要了解,相對路徑是以“當前所在路徑的相對位置”來表示的。舉例來說,當前在/home目錄下,如果想要進入/var/log目錄時,怎么寫呢?
cd /var/log(absolute)
cd ../var/log(relative)
因為在/home中,所以要回到上一層(../)之后,才能繼續(xù)向/var移動。
特別注意這兩個特殊的目錄:
.?:表示當前目錄,也可以使用./來表示。
..?:表示上一層目錄,也可以../來表示。
.與..的目錄概念很重要,你常常會看到cd ..或 ./command之類的命令方式,就是表示上一層與當前所在目錄的工作狀態(tài)。此外,針對“文件名”與“完整文件名(由/ 開始寫起的文件名)”的字符限制大小為:
單一文件或目錄的最大容許文件名為255個字符。包含完整路徑名稱及目錄(/)的完整文件名為4096個字符。
我們知道,/var/log/下面有個文件名為message,這個message文件的最大文件名可達255個字符。var與log這兩個上層目錄最長也分別可達255個字符。但總的來說, /var/log/messages這樣完整的文件名最長則可達4096個字符。
提示:root在Linux里面的意義很多。如果從“賬號”的角度來看,root指“系統(tǒng)管理員”身份,如果以“目錄”的角度來看,root指的是根目錄,就是/ 。要特別注意。
文件系統(tǒng)的目錄結(jié)構(gòu):
- 文件和目錄被一個組織成一個單根倒置樹結(jié)構(gòu)
- 文件系統(tǒng)從根目錄下開始,用“/”表示
- 根文件系統(tǒng)(rootfs):root filesystem
- 標準Linux文件系統(tǒng)(如:ext4),文件名稱大小寫敏感
- 以 . 開頭的文件為隱藏文件
- 路徑用 / 分隔
- 文件名最長255個字節(jié)
- 包括路徑在內(nèi)文件名稱最長4095個字節(jié)
- 藍色-->目錄? ? ?綠色-->可執(zhí)行文件? ? ?紅色-->壓縮文件? ??淺藍色-->鏈接文件? ? ?灰色-->其他文件
-
除了斜杠和NUL,所有字符都有效,但使用特殊字符的目錄名和文件不推薦使用,有些字符需要用引號來引用。
- 每個文件都有兩類相關(guān)數(shù)據(jù):元數(shù)據(jù):metadata,即屬性, 數(shù)據(jù):data,即文件內(nèi)容
2、默認的基本目錄結(jié)構(gòu)如下:
/boot:引導(dǎo)文件存放目錄,內(nèi)核文件(vmlinuz)、引導(dǎo)加載器(bootloader,grub)都存放于此目錄
/bin:所有用戶使用的基本命令;不能關(guān)聯(lián)至獨立分區(qū),OS啟動即會用到的程序
/sbin:管理類的基本命令;不能關(guān)聯(lián)至獨立分區(qū),OS啟動即會用到的程序
/lib:啟動時程序依賴的基本共享庫文件以及內(nèi)核模塊文件(/lib/modules)
/lib64:專用于x86_64系統(tǒng)上的輔助共享庫文件存放位置
/etc:配置文件目錄
/home/USERNAME:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動設(shè)備掛載點
/mnt:臨時文件系統(tǒng)掛載點
/dev:設(shè)備文件及特殊文件存儲位置
? ? ? ? ? b: block device,隨機訪問
? ? ? ? ? c: character device,線性訪問
/opt:第三方應(yīng)用程序的安裝位置
/srv:系統(tǒng)上運行的服務(wù)用到的數(shù)據(jù)
/tmp:臨時文件存儲位置
/usr: universal shared, read-only data
? ? ? ? bin: 保證系統(tǒng)擁有完整功能而提供的應(yīng)用程序
? ? ? ? sbin:
? ? ? ? lib:32位使用
? ? ? ? lib64:只存在64位系統(tǒng)
? ? ? ? include: C程序的頭文件(header files)
? ? ? ? share:結(jié)構(gòu)化獨立的數(shù)據(jù),例如doc, man等
? ? ? ? local:第三方應(yīng)用程序的安裝位置
? ? ? ? ? ? ? ? ? ? ? ? ? bin, sbin, lib, lib64, etc, share
/var: variable data files
? ? ? ? cache:應(yīng)用程序緩存數(shù)據(jù)目錄
? ? ? ? lib:應(yīng)用程序狀態(tài)信息數(shù)據(jù)
? ? ? ? local:專用于為/usr/local下的應(yīng)用程序存儲可變數(shù)據(jù)
? ? ? ? lock:鎖文件
? ? ? ? log:日志目錄及文件
? ? ? ? opt:專用于為/opt下的應(yīng)用程序存儲可變數(shù)據(jù)
? ? ? ? run:運行中的進程相關(guān)數(shù)據(jù),通常用于存儲進程pid文件
? ? ? ? spool:應(yīng)用程序數(shù)據(jù)池
? ? ? ? tmp:保存系統(tǒng)兩次重啟之間產(chǎn)生的臨時數(shù)據(jù)
/proc: 用于輸出內(nèi)核與進程信息相關(guān)的虛擬文件系統(tǒng)
/sys:用于輸出當前系統(tǒng)上硬件設(shè)備相關(guān)信息虛擬文件系統(tǒng)
/selinux:security enhanced Linux,selinux相關(guān)的安全策略等信息的存儲位置
3、文件系統(tǒng)結(jié)構(gòu)總結(jié):
- Linux的目錄中只有一個根目錄/
- Linux的各個目錄存放的內(nèi)容是規(guī)劃好的,不要亂放文件。
- Linux是以文件的形式管理設(shè)備的,因此Linux系統(tǒng)中一切皆為文件。
- Linux的各個文件目錄下存放什么內(nèi)容,需要有一個準確的認識。
?4、文件類型
使用命令查看文件,首字母會標記該文件的文件類型,有以下幾種類型:
- –?: 普通文件
- d: 目錄文件
- b:塊文件
- c:字符文件
- l:符號鏈接文件
- p:管道文件pipe
- s:套字節(jié)文件socket
?
FHS定義了兩層規(guī)范:第一層是 / ,第二層是針對 /usr 和 /var 這兩個目錄的子目錄來定義的。
/dev 設(shè)備目錄
/etc 配置文件以及服務(wù)啟動的目錄
/etc/init.d 存放系統(tǒng)或服務(wù)器以system v 模式啟動的腳本
/etc/sysconfig/network-scripts/ifcfg-eth0 設(shè)置網(wǎng)卡 /etc/init.d/network restart ; ifdown eth0;
/etc/sysconfig/network 可修改機器名及網(wǎng)卡啟動,網(wǎng)關(guān)等配置
/etc/resolv.conf 設(shè)置linux本地的客戶端DNS的文件
/etc/hosts 設(shè)定用戶IP與名字的對應(yīng)表
/etc/fstab 記錄開機要mount的文件系統(tǒng)的一個文件
/etc/inittab 設(shè)定系統(tǒng)啟動時init進程將把系統(tǒng)設(shè)置成什么樣的runlevel及加載相關(guān)的啟動文件設(shè)置。
/etc/rc.local 存放開機自啟動程序命令的文件。(chkconfig)
/etc/exports 設(shè)定NFS網(wǎng)絡(luò)文件系統(tǒng)用的配置文件。
/etc/xinit.d 如果服務(wù)器是通過xinitd模式運行的,他的腳本存放在這里。
/etc/profile 系統(tǒng)全局環(huán)境變量配置路徑。
/etc/profile.d 加載系統(tǒng)登錄程序一個目錄,命令或文件獨立存在。
/etc/skel 存放新用戶配置文件目錄
/proc 顯示內(nèi)核及進程信息虛擬文件系統(tǒng)
/tmp 臨時文件目錄
/home 普通用戶家目錄
/var 變化目錄,一般是日志文件目錄。
/usr 用戶程序及數(shù)據(jù),幫助文件等目錄。
/usr/bin 應(yīng)用程序
/usr/share 數(shù)據(jù)文件,幫助
/usr/local 存放用戶自己安裝的程序,相當于c:/program files ,一般編譯軟件的時候默認路徑,yum或rpm包安裝默認路徑一般不是這里。
/usr 存放unix系統(tǒng)商開發(fā)的程序。
/opt 存放第三方廠商開發(fā)的程序。
/etc/motd 設(shè)置警告信息
參考:Linux:FHS標準 - 幸??蚣?- 博客園?
百度百科-驗證
Linux FHS結(jié)構(gòu) - Steven_shl - 博客園
百度安全驗證
總結(jié)
以上是生活随笔為你收集整理的Linux FHS结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vc2017+opencv3.4.1+摄
- 下一篇: 各种开源协议汇总