Linux刪除文件后空間不釋放


最近線上 elasticsearch 由於磁盤空間不足報錯,於是乎對磁盤進行了分析,刪除了一些 Tomcat 日志文件,但是刪除后發現並沒有磁盤空間釋放。於是 google 了一下。

原來在Linux或者Unix系統中,通過rm或者文件管理器刪除文件將會從文件系統的目錄結構上解除鏈接(unlink),然而如果文件是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件,磁盤空間也一直被占用。而我刪除的是正在運行中的 Tomcat 的 logs,刪除的時候文件正在被使用中。

Linux 使用 lsof | grep deleted 命令獲得一個已經被刪除但是仍然被應用程序占用的文件列表,kill 掉相關進程即可強制要求系統回收分配給正在使用的的文件。或者也可以將文件占用取消,比如當前場景可以讓 Tomcat 關閉即可取消文件占用。
lsof 全名 list opened files,也就是列舉系統中已經被打開的文件。)

在網上還看到了一種方法,使用 echo " " > logs/xxx.log 通過這種方法,磁盤空間不但可以馬上釋放,也可保障進程繼續向文件寫入日志,這種方法用於在線清理 ApacheTomcatNginxWeb 服務產生的日志文件相當實用。

本文由個人 hexo 博客 co2fe.com 遷移
date: 2018-11-21 16:53:29


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM