每乙個檔案都有兩個計數器:i_count和i_nlink,這兩個計數器是用來幹嘛的呢?當乙個程序呼叫乙個檔案時這個檔案的i_count就會加1,每當乙個檔案多乙個硬鏈結時這個檔案的i_nlink就會加1,最新建立的檔案通常都會有乙個i_nlink,即檔名本身,檔名也是乙個硬鏈結,目錄會有兩個i_nlink,目錄的名字算是乙個硬鏈結,而目錄內部還有乙個硬鏈結,所以目錄加起來是兩個硬鏈結 ,如下所示:
[root@client tmp]# mkdir test.dir[root@client tmp]# ln test.txt /etc/test.txt.link[root@client tmp]#
touch
test.txt
[root@client tmp]# ll -d test.dir/drwxr-xr-x 2 root root 6 mar 19
16:30 test.dir/[root@client tmp]# ll test.txt
-rw-r--r-- 1 root root 0 mar 19
16:30 test.txt
[root@client tmp]# ll test.txt
-rw-r--r-- 2 root root 0 mar 19 16:30 test.txt
而i_count並不會被直接顯示出來當我們rm -rf刪除乙個檔案或目錄時,其實就是減少乙個硬鏈結而已,如果真實的檔案依然還有硬鏈結,那檔案就沒有真正刪除成功,只有檔案的i_nlink硬鏈結數量等於0時和i_count數量等於0時,檔案才被真正刪除。
我之前就曾遇到乙個類似的故障案例,就是由於i_count數量沒有為0,而僅僅刪除的硬鏈結,從而導致檔案沒有被刪除成功,直到重啟呼叫那個檔案的程序之後,檔案才得以被釋放,i_count等於0,檔案才真正被刪除,空間才得以被釋放。
Linux檔案刪除原理
linux檔案刪除原理 linux是通過link的數量來控制檔案刪除的,只有當乙個檔案不存在任何link的時候,這個檔案才會被刪除。一般來說,每個檔案都有2個link計數器 i count 和 i nlink。i count的意義是當前檔案使用者 或被呼叫 的數量,i nlink 的意義是介質連線的...
Linux檔案刪除原理
linux是通過link的數量來控制檔案刪除的,只有當乙個檔案不存在任何link的時候,這個檔案才會被刪除。一般來說,每個檔案都有2個link計數器 i count 和 i nlink。i count的意義是當前檔案使用者 或被呼叫 的數量,i nlink 的意義是介質連線的數量 硬鏈結的數量 可以...
linux檔案刪除原理
i link 硬鏈結數量 為0,檔案就被刪除 i count 程序引用計數 為0,檔案就被刪除 檔案刪除的條件i link 0並且i count 0,此時檔案就被刪除 在工作中偶爾會遇到一種情況是,當磁碟空間滿了,刪除一些覺得沒必要的檔案,但是刪除之後磁碟空間未沒有減少,還是處於滿的狀態,這種情況的...