2018-12-26
https://www.blackmoreops.com/2015/06/18/linux-file-system-hierarchy-v2-0/
Linux中(zhōng)的文件是什麽?它的文件系統又(yòu)是什麽?那些配置文件又(yòu)在哪裏?我(wǒ)下(xià)載好的程序保存在哪裏了?在 Linux 中(zhōng)文件系統是标準結構的嗎(ma)?好了,上圖簡明地闡釋了Linux
的文件系統的層次關系。當你苦于尋找配置文件或者二進制文件的時候,這便顯得十分(fēn)有用了。我(wǒ)在下(xià)方添加了一(yī)些解釋以及例子,不過“篇幅較長,可以有空再看”。
另外(wài)一(yī)種情況便是當你在系統中(zhōng)獲取配置以及二進制文件時,出現了不一(yī)緻性問題,如果你是在一(yī)個大(dà)型組織中(zhōng),或者隻是一(yī)個終端用戶,這也有可能會破壞你的系統(比如,二
進制文件運行在舊(jiù)的庫文件上了)。若然你在你的Linux系統上做安全審計的話(huà)
https://www.blackmoreops.com/2015/02/15/in-light-of-recent-linux-exploits-linux-security-audit-is-a-must/
你将會發現它很容易遭到各種攻擊。所以,保持一(yī)個清潔的操作系統(無論是Windows還是Linux)都顯得十分(fēn)重要。
Linux的文件是什麽?
對于UNIX系統來說(同樣适用于Linux),以下(xià)便是對文件簡單的描述:
在UNIX系統中(zhōng),一(yī)切皆爲文件;若非文件,則爲進程
這種定義是比較正确的,因爲有些特殊的文件不僅僅是普通文件(比如命名管道和套接字),不過爲了讓事情變的簡單,“一(yī)切皆爲文件”也是一(yī)個可以讓人接受的說法。Linux
系統也像UNIX系統一(yī)樣,将文件和目錄視如同物(wù),因爲目錄隻是一(yī)個包含了其他文件名的文件而已。程序、服務、文本、圖片等等,都是文件。對于系統來說,輸入和輸出設備,
基本上所有的設備,都被當做是文件。
題圖版本曆史:
下(xià)載鏈接
以下(xià)是大(dà)圖的下(xià)載地址。如果你需要其他格式,請跟原作者聯系,他會嘗試制作并且上傳到某個地方以供下(xià)載
大(dà)圖 (PNG 格式) – 2480×1755 px – 184KB
最大(dà)圖 (PDF 格式) – 9919x7019 px – 1686KB
注意: PDF格式文件是打印的最好選擇,因爲它畫質很高。
Linux 文件系統描述
爲了有序地管理那些文件,人們習慣把這些文件當做是硬盤上的有序的樹(shù)狀結構,正如我(wǒ)們熟悉的'MS-DOS'(磁盤操作系統)就是一(yī)個例子。大(dà)的分(fēn)枝包括更多的分(fēn)枝,分(fēn)枝的末梢
是樹(shù)的葉子或者普通的文件。現在我(wǒ)們将會以這樹(shù)形圖爲例,但晚點我(wǒ)們會發現爲什麽這不是一(yī)個完全準确的一(yī)幅圖。
Linux的文件類型
大(dà)多數文件僅僅是普通文件,他們被稱爲regular文件;他們包含普通數據,比如,文本、可執行文件、或者程序、程序的輸入或輸出等等
雖然你可以認爲“在Linux中(zhōng),一(yī)切你看到的皆爲文件”這個觀點相當保險,但這裏仍有着一(yī)些例外(wài)。
目錄:由其他文件組成的文件
特殊文件:用于輸入和輸出的途徑。大(dà)多數特殊文件都儲存在/dev中(zhōng),我(wǒ)們将會在後面讨論這個問題。
鏈接文件:讓文件或者目錄出現在系統文件樹(shù)結構上多個地方的機制。我(wǒ)們将詳細地讨論這個鏈接文件。
(域)套接字:特殊的文件類型,和TCP/IP協議中(zhōng)的套接字有點像,提供進程間網絡通訊,并受文件系統的訪問控制機制保護。
命名管道 : 或多或少有點像sockets(套接字),提供一(yī)個進程間的通信機制,而不用網絡套接字協議。
現實中(zhōng)的文件系統
對于大(dà)多數用戶和常規系統管理任務而言,“文件和目錄是一(yī)個有序的類樹(shù)結構”是可以接受的。然而,對于電腦而言,它是不會理解什麽是樹(shù),或者什麽是樹(shù)結構。
每個分(fēn)區都有它自己的文件系統。想象一(yī)下(xià),如果把那些文件系統想成一(yī)個整體(tǐ),我(wǒ)們可以構思一(yī)個關于整個系統的樹(shù)結構,不過這并沒有這麽簡單。在文件系統中(zhōng),一(yī)個文件代
表着一(yī)個inode(索引節點),這是一(yī)種包含着構建文件的實際數據信息的序列号:這些數據表示文件是屬于誰的,還有它在硬盤中(zhōng)的位置。
每個分(fēn)區都有一(yī)套屬于他們自己的inode,在一(yī)個系統的不同分(fēn)區中(zhōng),可以存在有相同inode的文件。
每個inode都表示着一(yī)種在硬盤上的數據結構,保存着文件的屬性,包括文件數據的物(wù)理地址。當硬盤被格式化并用來存儲數據時(通常發生(shēng)在初始系統安裝過程,或者是在一(yī)個已
經存在的系統中(zhōng)添加額外(wài)的硬盤),每個分(fēn)區都會創建固定數量的inode。這個值表示這個分(fēn)區能夠同時存儲各類文件的最大(dà)數量。我(wǒ)們通常用一(yī)個inode去(qù)映射2-8k的數據塊。當
一(yī)個新的文件生(shēng)成後,它就會獲得一(yī)個空閑的inode。在這個inode裏面存儲着以下(xià)信息:
文件屬主和組屬主
文件類型(常規文件,目錄文件......)
文件權限
創建、最近一(yī)次讀文件和修改文件的時間
inode裏該信息被修改的時間
文件的鏈接數(詳見下(xià)一(yī)章)
文件大(dà)小(xiǎo)
文件數據的實際地址
唯一(yī)不在inode的信息是文件名和目錄。它們存儲在特殊的目錄文件。通過比較文件名和inode的數目,系統能夠構造出一(yī)個便于用戶理解的樹(shù)結構。用戶可以通過ls -i查看inode
的數目。在硬盤上,inodes有他們獨立的空間。
上一(yī)篇:數據結構學習秘籍
下(xià)一(yī)篇:數據結構(一(yī))--入門和預備知(zhī)識
*請認真填寫需求,我(wǒ)們會在24小(xiǎo)時内與您取得聯系。