1. 程式人生 > 其它 >linux的rm 刪除的檔案真的那麼快刪除完嗎?

linux的rm 刪除的檔案真的那麼快刪除完嗎?

一般來說我們在linux伺服器上面刪除檔案看起來是很快的,一個rm就把資料刪除了

但是實際上,這個並沒有真正的刪除。

我們可以通過 

lsof |grep deleted

 

 

 我們可以看到檔案其實還沒完全刪完的。

實際上還是可以讀取的。

只有當一個檔案的引用計數為0(包括硬連結數)的時候,才可能呼叫unlink刪除,只要它不是0,那麼就不會被刪除。所謂的刪除,也不過是檔名到 inode 的連結刪除,只要不被重新寫入新的資料,磁碟上的block資料塊不會被刪除,因此,你會看到,即便刪庫跑路了,某些資料還是可以恢復的。換句話說,當一個程式開啟一個檔案的時候(獲取到檔案描述符),它的引用計數會被+1,rm雖然看似刪除了檔案,實際上只是會將引用計數減1,但由於引用計數不為0,因此檔案不會被刪除。

 

參考:

https://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247495456&idx=2&sn=e2907183c41ee6bd793fd01482c2309e&chksm=e9188a3cde6f032a3ab0782292376864c3777adf4fcaf74badaea5c21be0cabb9843f9916d45&token=35894323&lang=zh_CN#rd