Tomcat servlet引擎未运行,但pid文件存在.这条消息是什么意思?如果我得到它,我需要恢复Tomcat吗?

Ram*_*ami 5 shell tomcat crontab recover tomcat7

我正在制作一个shell脚本,以便在崩溃后重启tomcat.我想我需要在我的脚本中处理此消息"Tomcat servlet引擎未运行,但pid文件存在." 这个消息意味着什么?我是否需要将其作为错误消息考虑在内,迫使我重新启动Tomcat?

我的脚本如下:

#!/bin/bash
SERVICE=/etc/init.d/tomcat7
STOPPED_MESSAGE=" * Tomcat servlet container is not running."  
PID_FILE_MESSAGE=" * Tomcat servlet engine is not running, but pid file exists."

if [ "`$SERVICE status`" == "$STOPPED_MESSAGE" ];
then  
{
    $SERVICE start
}
else
    if [ "`$SERVICE status`" == "$PID_FILE_MESSAGE" ];
    then
    {
        $SERVICE restart
    }
    fi
fi
Run Code Online (Sandbox Code Playgroud)

Chr*_*ltz 5

这是PID的定义。PID 文件是包含进程标识符的文件。如果Tomcat的启动脚本在环境变量设置正确的情况下运行CATALINA_PID,那么Tomcat进程的PID将在启动时记录到文件中。如果当您尝试启动 Tomcat 时该文件存在,脚本将拒绝运行,因为它不想破坏(可能有效的)PID 文件。

如果您确定 Tomcat 没有运行,只需删除该文件(它应该可以通过CATALINA_PID环境变量访问),然后重试。

我分享 @jordanm 关于使用退出代码而不是检查特定(文本)输出的评论:最新版本的 Tomcat 甚至不使用您上面显示的消息,因此它非常脆弱。

如果您想要一个自动重新启动的服务,请考虑查看jsvc,它实际上以源代码形式随 Tomcat 二进制文件一起提供。