在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 —-只需把進程刪掉就能釋放空間。
linux
lsof -n |grep deleted |awk -F’ ‘ ‘{printf 「kill -9 %s\n」, $2}’ > freedisk.shandroid