CentOS,Tomcat 6 失败且无法启动-java 问题?

CentOS,Tomcat 6 失败且无法启动-java 问题?

Linux 不是我的强项,所以如果这看起来有点新,请多多包涵。我租了一个虚拟 Linux 机箱,里面有 CentOS(不确定是哪个版本)和 Apache 以及 Tomcat 6。

在过去 24 小时内,Tomcat 进程失败,无法重新启动。我不知道为什么,因为它一直运行良好,我没有对服务器操作进行任何更改(没有更新或任何新软件)

我可以获得以下信息,但不幸的是,这些信息并未给我提供解决方案:

当我尝试启动 tomcat6 服务(service tomcat6 start)时,它显示 OK,但是当我检查其状态时(service tomcat6 status)它显示“PID 文件存在,但进程未运行”

每次我尝试启动 catalina.out 文件时,它都会记录类似这样的内容:/usr/sbin/tomcat6/:第 30 行:-Duser.language=en:未找到命令(有时 30 会是 60)。

编辑以添加:catalina.out 中的新/相关事件是:

/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 60: -Duser.language=en: command not found
/usr/sbin/tomcat6: line 30: -Duser.language=en: command not found

在 /var/log/tomcat6-initd.log 中我看到以下投诉:

/usr/sbin/tomcat6: error: Failed to set JAVACMD. 

该文件的完整日志为:

/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD
/usr/sbin/tomcat6: error: Failed to set JAVACMD

自此开始以来,没有其他日志更新

我尝试过通过在线控制台和 PuTTy 会话重新启动机器,也尝试过删除 tomcat 进程 id 文件(看到某个地方有人遇到了类似的问题),但这些都不起作用,你可以想象我也尝试过多次启动 tomcat6,但每次都没有成功。

有人见过这样的事吗?或者能帮我弄清楚发生了什么事吗?

编辑:我还添加了来自 /usr/sbin/tomcat6 的摘录,希望其格式正确,我相信如果您使用服务 tomcat6 启动,它是响应的文件部分。

    if [ "$1" = "start" ]; then
  ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \
    -classpath "$CLASSPATH" \
    -Dcatalina.base="$CATALINA_BASE" \
    -Dcatalina.home="$CATALINA_HOME" \
    -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
    -Djava.io.tmpdir="$CATALINA_TMPDIR" \
    -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \
    -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \
    org.apache.catalina.startup.Bootstrap start \
    >> ${CATALINA_BASE}/logs/catalina.out 2>&1 &
    if [ ! -z "$CATALINA_PID" ]; then
      echo $! > $CATALINA_PID
    fi

答案1

/usr/sbin/tomcat6:错误:无法设置 JAVACMD

您的系统似乎无法定义 JAVACMD,从而导致

/usr/sbin/tomcat6:第 60 行:-Duser.language=en:未找到命令

由于 JAVACMD 为空,系统尝试运行-Duser.language=en

JAVACMD 定义(或未定义)于/usr/share/java-utils/java-functions

  # Add all sorts of jvm layouts here
  if [ -x "$JAVA_HOME/jre/sh/java" ]; then
    JAVACMD="$JAVA_HOME/jre/sh/java"
  elif [ -x "$JAVA_HOME/bin/java" ]; then
    JAVACMD="$JAVA_HOME/bin/java"
  else
    JAVACMD=`which java 2>/dev/null`
  fi

  if [ ! -x "$JAVACMD" ]; then
    echo "$0: error: Failed to set JAVACMD"
    return 1
  fi

因此,看起来您java在 tomcat 所查找的地方没有有效的命令。

相关内容