1. 程式人生 > >處理Linux系統下已刪除檔案繼續佔用空間問題

處理Linux系統下已刪除檔案繼續佔用空間問題

在Linux中,當我們使用rm在linux上刪除了大檔案,但是如果有程序打開了這個大檔案,卻沒有關閉這個檔案的控制代碼,那麼linux核心還是不會釋放這個檔案的磁碟空間,最後造成磁碟空間佔用100%,整個系統無法正常執行。這種情況下,通過df和du命令查詢的磁碟空間,兩者是無法匹配的,可能df顯示磁碟100%,而du查詢目錄的磁碟容量佔用卻很小。


遇到這種情況,基本可以斷定是某些大檔案被某些程式佔用了,並且這些大檔案已經被刪除了,但是對應的檔案控制代碼沒有被某些程式關閉,造成核心無法收回這些檔案佔用的空間。


那麼,如何查詢那些檔案被某些程式佔用呢:


lsof -n | grep deleted
COMMAND     PID      USER   FD      TYPE             DEVICE        SIZE       NODE NAME
dd        31708      higkoo    1w      REG                8,2 5523705856     429590 /data/filetest (deleted)
命令:lsof -n | grep deleted打印出所有針對已刪除檔案的讀寫操作,這類操作是無效的,也正是磁碟空間莫名消失的根本原因。
解決辦法:kill -9 PID   —-只需把程序刪掉就能釋放空間。