繼昨天服務器上應用 CPU占用過高 后面該應用宕掉了以后 java 一次CPU占用過高問題的排查及解決
今天又出現了更嚴重的問題 昨天解決完問題 今天早些時候 出現了系統無法登錄 查詢日志定位應該數數據庫的問題
后面發現是磁盤滿了 其實還是昨天的出現問題的導致, 死循環刷了特別多的日志,,導致磁盤空間不足 導致數據庫讀寫出問題了,繼而導致應用不可用
使用cd / 后 du -sh * 列出各文件夾的占用大小
可以看到主要是usr/ 進入 usr 繼續看磁盤占用
/usr/local文件夾依舊還是最大的
繼續進入/usr/local
基本可以確定是日志文件太多了
清理掉一些日志 mysql就正常了, 應用也正常了, 故而整理了一下服務器的磁盤, 避免下次再次發生磁盤不足的情況
索性這兩次出現的問題都是一些內部的應用, 出現了問題影響范圍有限
-----------------------------------------------------------------------------------華麗的分割線-------------------------------------------------------------------------------------------
在整理linux磁盤的時候 查了一些資料 故而整理一下 ,留給以后需要的時候的使用
df -h 查看磁盤占用情況
du -sh * 進入某個人文件夾后 使用該命令可以看該文件夾下文件的占用情況
但是發現使用rm -rf 文件名 刪除文件后 磁盤空間並沒有變化
查詢資料發現是 通過rm或者文件管理器刪除文件將會從文件系統的目錄結構上解除鏈接(unlink).然而如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。
簡單的理解 就是rm 刪除的是引用 如果引用對應的文件正在被使用,這個文件是不會真正的被刪除掉的
lsof | grep deleted
-----------------------------------------------------------------------------------華麗的分割線-------------------------------------------------------------------------------------------
順便學習一下 lsof (list opened files)
lsof全名list opened files,也就是列舉系統中已經被打開的文件。我們都知道,linux環境中,任何事物都是文件,
設備是文件,目錄是文件,甚至sockets也是文件。所以,用好lsof命令,對日常的linux管理非常有幫助。
lsof -i : 端口號 可以用來查詢端口時候被占用
lsof -i :8082
lsof 文件 顯示開啟文件/usr/local/tomcat_backend/logs/catalina.out的進程
lsof /usr/local/tomcat_backend/logs/catalina.out
lsof - p 進程PID
lsof - p 1498
看進程號為1498的進程打開了哪些文件