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