事件源于在服務器運行一個腳本程序…
好好的腳本突然報錯,還以為腳本出現(xiàn)問題了。細看報錯原因(具體報錯信息已經(jīng)忘記了),是沒有可用空間。從沒遇見過這個情況,怎么辦呢?
一、確定是不是真的是磁盤空間不足
輸入命令:df –lh 查看磁盤信息
很明顯:Filesystem下的掛載點 /dev/xvda1 下的40G容量已經(jīng)耗盡。
既然問題已經(jīng)確定了,接下來就是處理了。
處理方法也很簡單,就是刪文件。
問:刪除什么文件?
答:刪除占用磁盤空間大,但又無用的文件。
問:什么是無用的文件?
答:如果對系統(tǒng)不熟悉的話,日志可能是你第一的下手目標。
二、如何定位最大文件目錄
輸入命令: cd / 進入根目錄。
輸入命令:du -h max-depth=1 尋找當前目錄,哪個文件夾占用空間最大
以上兩個命令之后,可以看到 /usr 此路徑占用較大磁盤空間,占用了21G。眼尖的同學可能看到了最后一項顯示24G,它表示當前目錄所有文件占用磁盤空間總和容量是24G。
如法炮制,幾番判斷后,定位到tomcat的日志文件。
由上圖可以判斷,17G文件在當前目錄(tomcat日志目錄)文件中。
三、如何定位最大文件
輸入命令:ls –lhS 將文件以從大到小順序展現(xiàn)
最終定位文件為:catalina.out 這個日志文件。
四、確認文件未被占用
刪除文件誰都會:rm –f catalina.out 但是,最好確認下是否要下載下來讓開發(fā)人員分析日志。
辛苦一陣找到文件,刪除了很開心,輸入命令:df –lh 發(fā)現(xiàn)磁盤空間仍是滿的狀態(tài)。跟圖一完全沒有區(qū)別。難道說是需要重啟系統(tǒng)嗎?linux會這么不友好么?
谷歌一下,發(fā)現(xiàn)了這么一段話:
在Linux或者Unix系統(tǒng)中,通過rm或者文件管理器刪除文件將會從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink).然而如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。
輸入命令:/usr/sbin/lsof|grep deleted 確認刪除文件是否被占用
確實被占用。根據(jù)第二列提供的pid,輸入命令:kill -9 13117 殺掉進程。
再次輸入命令:df –lh
如圖,磁盤空間被釋放了。問題順利處理了。