原文地址:http://lcbk.net/tomcat/1396.html
我們知道一般企業使用Tomcat 作為Web端時,它產生的日志會越來越大,特別是catalina.out
這個日志文件,然而有些人使用rm -rf catalina.out
直接刪除掉這個文件,所導致的結果就是空間沒有得到釋放反而越來越大;
今天老蔡發現Tomcat的日志所在的opt分區約占越滿,上服務器查看發現磁盤使用空間為100多G,但用du查看實際使用空間不到30G。因此70多G空間是因為刪除正在讀的文件而導致文件被刪除而空間沒釋放造成的。
用lsof查看如下面所示,見標紅行。處理辦法:
- [root@h3.web.mzone.mdc.139.com /]# /usr/sbin/lsof|grep deleted
- php 4223 apache 1w REG 253,0 306483577 22578341 /tmp/status.log (deleted)
- php 4223 apache 2w REG 253,0 306483577 22578341 /tmp/status.log (deleted)
- php 7136 root 3uW REG 253,0 0 7410877 /var/lib/php/session/sess_vi88skak23129mhai12md342m6 (deleted)
- memcacheq 11644 apache 0u CHR 136,1 3 /dev/pts/1 (deleted)
- memcacheq 11753 apache 0u CHR 136,1 3 /dev/pts/1 (deleted)
- php 13479 apache 1w REG 253,0 75514309287 1051783 /tmp/audit_priority.log (deleted)
- php 13479 apache 2w REG 253,0 75514309287 1051783 /tmp/audit_priority.log (deleted)
- php 23809 apache 1w REG 253,0 19613 22578349 /tmp/webdisk.log (deleted)
- php 23809 apache 2w REG 253,0 19613 22578349 /tmp/webdisk.log (deleted)
- php 24935 apache 1w REG 253,0 571 22578598 /tmp/audit_auto_memcached.log (deleted)
- php 24935 apache 2w REG 253,0 571 22578598 /tmp/audit_auto_memcached.log (deleted)
- memcacheq 26671 apache 0u CHR 136,0 2 /dev/pts/0 (deleted)
- memcacheq 26677 apache 0u CHR 136,0 2 /dev/pts/0 (deleted)
1.重啟機器或者重啟相關服務(http)。
2.刪掉進程,具體為:
- php 13479 apache 1w REG 253,0 75514309287 1051783 /tmp/audit_priority.log (deleted
)
從 lsof的輸出中,可以發現pid為13479 的進程持有着以文件描述號(fd)為 1打開的文件/tmp/audit_priority.log。在我們找到了這個文件之后可以通過結束進程的方式來釋放被占用的空間:
- kill -9 13479
為了杜絕這個問題,老蔡建議大家可以寫個自定義的腳本,對於刪除正在寫的文件一般用 cat /dev/null > file,而不是直接rm(直接rm會造成文件刪除空間不釋放的問題)。
轉載請務必注明來自»老蔡博客» 作者:老蔡 » 鏈接:http://lcbk.net/tomcat/1396.html