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 所查找的地方没有有效的命令。