處理Linux系統下已刪除檔案繼續佔用空間問題
阿新 • • 發佈:2018-12-14
在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 —-只需把程序刪掉就能釋放空間。