lsof解決磁盤佔用過高,查詢卻無大文件處理一例!

   巡檢發現一個服務器佔用到了96%,使用“find / -type f -size +1024M”查詢了一下只有一個19G的文件比較大,而且500G的硬盤,3個多小時沒有執行完這個命令。於是搜索半天,發現了一個可能很多人都會知道,但會忽視的問題就是(以下爲原文摘抄):


  “就是在Linux的文件系統中刪除一個文件,系統並不會真的立刻把這個文件丟棄掉,而只是把它從文件的目錄系統中移除, 只有確保所有使用這個文件的程序全部都退出後,纔會真的把文件徹底刪除掉。”


    於是做如下操作,發現了真正佔用空間的文件:

1、首先執行,發現如下圖所示的佔用文件:

lsof  | grep '(deleted)'

wKioL1itcs2igHcrAABqWQMW8iY422.jpg-wh_50

2、把佔用文件的進程殺掉;

kill -9 31753


3、由於這個是jboss的服務,所以殺掉進程後重啓了jboss服務,然後在看佔用就正常了,萬惡的logo擋住了,之前是96%,重啓進程後降到了46%。

wKiom1itcs7C32pjAABf3kWzrr8624.jpg-wh_50

總結:

  其實總結過程不難看出,這應該是之前刪除/tmp下jar文件的同事忽略了這個文件是被進程佔用的情況,刪除了文件沒有重啓進程所導致的。在linux系統中刪除積累性文件時可以使用lsof命令查看一下文件是否有被進程佔用,在進行刪除和相關刪除後的操作,避免這種問題的產生。


延伸:

  根據搜索到的參考文章,du -h -x --max-depth=1命令可以查看到那個目錄佔用的空間較大。命令中-x參數會讓命令不統計不在同一個磁盤分區上目錄,或換句話說,忽略其他的磁盤掛載點。


參考文章:http://blog.csdn.net/scythe666/article/details/52020934 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章