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

通过systemd启动Tomcat失败,如何获取Java日志排查问题?

以下是catalina.sh中启动应用的代码片段:

eval $_NOHUP "\"$_RUNJAVA\"" "\"$CATALINA_LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
      -classpath "\"$CLASSPATH\"" \
      -Dcatalina.base="\"$CATALINA_BASE\"" \
      -Dcatalina.home="\"$CATALINA_HOME\"" \
      -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
      org.apache.catalina.startup.Bootstrap "$@" start \
      >> "$CATALINA_OUT" 2>&1 "&"

排查方案

1. 手动执行启动命令,实时查看输出

切换到Tomcat运行用户(例如tomcat),直接执行启动核心命令(去掉nohup和后台运行的&),错误信息会直接打印在控制台:

$_RUNJAVA "$CATALINA_LOGGING_CONFIG" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
      -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
      -classpath "$CLASSPATH" \
      -Dcatalina.base="$CATALINA_BASE" \
      -Dcatalina.home="$CATALINA_HOME" \
      -Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org.apache.catalina.startup.Bootstrap start

这种方式能快速定位启动失败原因,比如依赖缺失、端口占用、权限不足等。

2. 修改systemd服务配置,捕获完整日志

编辑Tomcat的systemd服务文件(通常路径为/etc/systemd/system/tomcat.service),添加或修改以下配置项:

StandardOutput=journal+console
StandardError=journal+console

执行以下命令重新加载配置并重启服务:

systemctl daemon-reload
systemctl restart tomcat.service

之后用journalctl -u tomcat.service -f查看日志,就能看到Java进程的标准输出和错误信息,不受catalina.out写入问题影响。

3. 检查systemd环境变量与脚本权限

  • 确保catalina.sh有可执行权限:
    chmod +x $CATALINA_HOME/bin/catalina.sh
    
  • 很多启动失败是因为systemd的运行环境和用户环境不一致,需在service文件中明确设置核心环境变量:
    Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
    Environment="CATALINA_HOME=/opt/tomcat9"
    Environment="CATALINA_BASE=/opt/tomcat9"
    

4. 强制Java生成启动日志

在JAVA_OPTS中添加日志参数,让Java直接输出启动细节到指定文件:

JAVA_OPTS="$JAVA_OPTS -Xlog:gc*,class+load=info:file=/opt/tomcat9/logs/java-startup.log:time,level,tags"

重启服务后,查看/opt/tomcat9/logs/java-startup.log,里面包含JVM启动参数、类加载情况等详细信息。

5. 检查日志目录权限

确认Tomcat运行用户对日志目录有读写权限:

chown -R tomcat:tomcat /opt/tomcat9/logs
chmod -R 755 /opt/tomcat9/logs

权限不足会导致进程无法写入catalina.out,进而出现日志为空的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:07:42