測試環境一台服務器/目錄空間使用率達到97%,但是通過du -sh *發現實際空間沒用到那么多,初步懷疑,之前刪除的文件,有運行中的進程一直占用,導致空間沒有釋放,如圖通過du -sh *發現共實際使用不到5G+空間,而通過df -h發現已經使用了45G。
接着我們通過lsof命令查找運行中的進程占用已經刪除的文件(僵死文件。這些文件實際上已經被刪除,但是有服務程序在使用這些文件,導致這些文件一直被占用,無法釋放磁盤空間,使用如下命令可以查看死文件占用情況),使用命令
lsof | grep delete |sort -nrk 7|more
注意:sort -nrk 7是將已經刪除的文件進行大小排序
15638進程占用大量的的刪除文件,釋放這些文件,首先查找進程ps -ef|grep 15638,我這個是測試環境,所以我使用kill -9 15638直接殺死進程,再用df -h
空間使用率已經下降到11%
總結:在日常運維過程中,如果我們需要刪除比較大的文件可以使用> filename,這種可以直接釋放磁盤空間,使用rm 如果有進程在訪問文件,則有可能出現磁盤空間不釋放的情況。