You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法清理运行中Tomcat的catalina.out日志,执行命令后日志立即恢复原大小

运行中Tomcat无法清理catalina.out的解决办法

直接用> catalina.out或echo > catalina.out清空后文件立即恢复原大小,是因为Tomcat进程仍持有该文件的句柄,写入操作会从之前的偏移量继续,导致文件出现空洞(显示大小和原文件一致,但实际占用空间可能更小)。以下是几种可行的解决方法:

方法一:清空后让Tomcat重新加载日志

  1. 先清空日志文件:
    cat /dev/null > catalina.out
    
  2. 找到Tomcat的进程ID(替换<tomcat_pid>为实际PID):
    ps aux | grep tomcat
    
  3. 发送USR1信号让Tomcat重新打开日志文件:
    kill -USR1 <tomcat_pid>
    
    发送信号后,Tomcat会重新绑定catalina.out,后续写入将从文件开头开始,不会再恢复原大小。

方法二:用logrotate自动管理日志(推荐长期使用)

配置logrotate规则,实现日志自动切割、压缩,无需手动清理:

  1. 创建logrotate配置文件(比如/etc/logrotate.d/tomcat):
    /opt/tomcat/logs/catalina.out {
        daily
        missingok
        rotate 7
        compress
        delaycompress
        copytruncate
        notifempty
        create 640 tomcat tomcat
    }
    
    • copytruncate:复制原日志到备份文件后截断原文件,无需重启Tomcat
    • rotate 7:保留7天的日志备份
    • compress:压缩旧日志
  2. 手动测试规则生效:
    logrotate -f /etc/logrotate.d/tomcat
    

方法三:临时应急(需重启Tomcat)

如果无法发送信号或使用logrotate,可先删除原文件,创建空文件后重启Tomcat:

rm -f catalina.out
touch catalina.out
chown tomcat:tomcat catalina.out  # 确保权限和原文件一致
systemctl restart tomcat  # 或用对应的Tomcat重启命令

内容的提问来源于stack exchange,提问作者Marco Qau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:54:58