當我們在linux系統下建立乙個ext2的檔案或者目錄時,系統都會分配乙個inode和乙個block。其中inode用來儲存檔案的屬性資訊,指向對應block的pointer。block則是儲存檔案的具體內容。
要注意的是,inode並不記錄檔名,只是記錄檔案的相關屬性,檔名是記錄在目錄所屬的block中的。
那麼,檔案與目錄的關係是怎麼樣的呢?
就如同上面的目錄提到的,檔案的相關鏈結會記錄在目錄的 block 資料區域, 所以當我們要讀取乙個檔案的內容時,我們的 linux 會先由根目錄 / 取得該檔案的上層目錄所在 inode , 再由該目錄所記錄的檔案關連性 (在該目錄所屬的 block 區域) 取得該檔案的 inode , 最後在經由 inode 內提供的 block 指向,而取得最終的檔案內容。我們以 /etc/crontab 這個檔案的讀取為例, 他的內容資料是這樣取得的∶
圖三、讀取 /etc/crontab 的簡易流程示意。
一塊 partition 在 ext2 底下會被格式化為 inode table 與 block area 兩個區域, 所以在圖三裡面,我們將 partition 以長條的方式來示意,會比較容易理解的啦!而讀取 /etc/crontab 的流程為∶
Linux 檔案鎖與 inode
1.程序 a 排他鎖住某檔案之後,程序 b 可以修改該檔案,但不能鎖住該檔案。2.程序 a 排他鎖住某檔案之後,程序 b 修改該檔案之後,因為檔案 inode 沒有改變,所以依然不能鎖住該檔案。3.程序 a 排他鎖住某檔案之後,程序 b 可以刪除該檔案,並建立同名檔案,此時程序 b 可以鎖住該檔案。...
關於檔案的INode與Java中的檔案操作介面
本文由作者周梁偉授權網易雲社群發布。近日做的專案中涉及到多程序共同讀寫多個檔案的問題,檔名和最後修改時間都是可能會被頻繁修改的,因而識別檔案的唯一性會產生相當的麻煩,於是專門再學習了一下檔案系統對檔案的組織管理方式。前面說了檔案在磁碟上的存放是以inode number為唯一id來區分的,在程序開啟...
Linux 符號鏈結與 inode
stat ln s 原始檔 目標檔案 當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每乙個需要的目錄下都放乙個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在其它的目錄下用 ln 命令鏈結 link 它就可以,不必重複的占用磁碟空間。例如 ln s bin less usr lo...