一、索引節點:
1、indoe表中包含文件系統所有文件列表
一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包含:
文件類型,權限,UID,GID;鏈接數(指向這個文件名路徑名稱個數);該文件的大小和不同的時間 戳;指向磁盤上文件的數據塊指針;有關文件的其他數據。
2、查看節點編號:#ls -i
3、indoe表結構:
原理圖如下:
4、節點編號在不同的分區下可以有相同的編號;同一分區下不能夠出現同樣的節點編號。(如:/boot和/testdir是兩個分區,但都有同樣的131和132節點編號,見下圖:)
但在同一分區下如果出現同樣的節點編號,只能是同一個文件(硬鏈接產生指向同一個文件)。如下圖,同一分區內有相同的節點編號,只能是同一個文件,使用硬鏈接指向:
5、鏈接數:
二、目錄:
文件引用一個是inode號
人是通過文件名來引用一個文件
一個目錄是目錄下的文件名和文件inode號之間的映射
Inode table:
三、cp、rm、mv和inode:
在CP的命令:分配一個空閒的inode號,在inode表中生成新條目;在目錄中創建一個目錄項,將名稱與inode編號關聯;拷貝數據生成新的文件
rm命令:鏈接數遞減,從而釋放的inode號可以被重用;把數據塊放在空閒列表中;
刪除目錄項,數據實際上不會馬上被刪除,但當另一個文件使用數據塊時將被覆蓋。
如果mv命令的目標和源在相同的文件系統,作爲mv命令:
用新的文件名創建對應新的目錄項;刪除舊目錄條目對應的舊的文件名;
不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動;如果目標和源在一個不同的文件系統,mv相當於cp和rm
四、硬鏈接和軟鏈接:
硬鏈接: 創建硬鏈接會增加額外的記錄項以引用文件,對應於同一文件系統上一個物理文件,每個 目錄引用相同的inode號,創建時鏈接數遞增。
刪除文件時:rm命令遞減計數的鏈接,文件要存在,至少有一個鏈接數;
當鏈接數爲零時,該文件被刪除;
不能跨越驅動器或分區
使用格式:# ln file [linkname]
軟鏈接:一個符號鏈接指向另一個文件,ls -l的顯示鏈接的名稱和引用的文件,一個符號鏈接的 內容是它引用文件的名稱
可以對目錄進行,可以跨分區,指向的是另一個文件的路徑;其大小爲指向的路徑字符串的長度;不增加或減少目標文件inode的引用計數;
使用格式:# ln –s file[linkname]
五、查看文件的內容:
文件可以包含多種類型的數據;檢查文文件類型,然後確定適當的開放命令或應用程序使用。
格式:file[options] <filename>...Option:
選項使用:-b列出文件辨識結果時,不顯示文件名稱。
-c詳細顯示指令執行過程,便於排錯或分析程序執行
-f列出文件中文件名的文件類型
-F使用指定分隔符號替換輸出文件名後默認的”:”分隔符
-i輸出mime類型的字符串
-L查看對應軟鏈接對應文件的文件類型
-z嘗試去解讀壓縮文件的內容
--help顯示命令在線幫助
eg:file -b 的使用如下圖:
查看一個系統分區下每個分區最多能支持的inode節點號(在Linux文件系統,inode節點編號是不支持拓展的):
命令:# df -i
### 查看用戶:getent passwd
更改用戶:sed –I ‘s/chesfer/che/g’/etc/passwd
sed –I ‘s/chesfer/che/g’ /etc/shadow
sed –I ‘s/chesfer/che/g’ /etc/gshadow
sed –I ‘s/chesfer/che/g’ /etc/group
watch –n 1 ‘df –I /boot’ 一秒掃描一次
for id in {1..19456} do touch/boot/f$id;echo f$id is created;done 指定生成一定數量的空文件(測試消耗inode節點號)
###