29

我试图停止Tomcat。它失败并显示此消息:

  • Tomcat没有及时停止。PID 文件未删除。

然后我再次尝试并得到了这个:

  • 找到 PID 文件 (/opt/tomcat/work/catalina.pid) 但未找到匹配的进程。停止中止。

然后我尝试在调试模式下启动 tomcat 并得到了这个:

  • 找到 PID 文件 (/opt/tomcat/work/catalina.pid)。Tomcat 还在运行吗?开始中止。

我他们删除了 /opt/tomcat/work/catalina.pid 并尝试重新启动并得到了这个:

  • $CATALINA_PID 已设置 (/opt/tomcat/work/catalina.pid) 但指定的文件不存在。Tomcat 正在运行吗?停止中止。

有人知道如何让tomcat重新启动吗?

4

14 回答 14

8

我在 Linux 服务器上启动了第二个Tomcat 服务器时收到此错误消息。

$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted.

在启动第二个 Tomcat 时,我按照要求设置了 CATALINA_PID,但我的错误是将它设置为一个目录(我假设 Tomcat 会在其中写入一个带有 pid 的默认文件名)。

解决方法只是更改我的 CATALINA_PID 以在其末尾添加一个文件名(我从上面的示例中选择了 catalina.pid)。接下来我进入目录,做了一个简单的:

touch catalina.pid

创建一个正确名称的空文件。然后,当我执行 shutdown.sh 时,我收到消息说:

PID file is empty and has been ignored.
Tomcat stopped.

我没有选择杀死 Tomcat,因为 JVM 正在使用中,所以我很高兴我找到了这个。

于 2016-11-24T11:34:18.867 回答
4

看来Tomcat实际上已经停止了。我开始了它,它开始很好。谢谢大家。

于 2012-09-11T12:38:46.963 回答
3

最近我遇到过几次停止异常。虽然shutdown.sh提供了一些信息,但情况有:

  • 该命令的结果ps -ef| grep java为 Null。
  • 命令ps -ef| grep java的结果不为空。

我的意见只是杀死Catalina的进程并删除pid文件(在你的情况下是/opt/tomcat/work/catalina.pid。)

结果似乎没有那么严重地影响他人。

于 2015-11-09T11:01:19.863 回答
3

确保 Tomcat 当前未在运行并且 PID 文件已删除。他们应该成功启动 Tomcat。

如果你重新开始,那么:

  1. 在. setenv.sh_<CATALINA_HOME>/bin
  2. 我在其中设置CATALINA_PID=/tmp/tomcat.pid(或您选择的其他目录),以便您可以更好地控制 Tomcat 进程。

然后启动Tomcat find catalina.shin<CATALINA_HOME>/bin并执行:

./catalina.sh start

并阻止它运行:

./catalina.sh stop 10 -force

catalina.sh脚本的文档:

./catalina.sh

Usage: catalina.sh ( commands ... )
commands:

start             Start Catalina in a separate window
stop              Stop Catalina, waiting up to 5 seconds for the process to end
stop n            Stop Catalina, waiting up to n seconds for the process to end
stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running
stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running

注意:如果要使用-force标志,则CATALINA_PID必须进行设置。

于 2016-11-09T17:21:18.577 回答
2

有时如果重启后相同的 pid 正在运行,tomcat 将无法启动

我的 pid 文件位于 apache-tomcat/temp/tomcat.pid

作为解决方案,我只检查 PID 是否属于 Catalina

更改文件 apache-tomcat/bin/catalina.sh 关于第 386 行

ps -p $PID >/dev/null 2>&1

ps -fp $PID |grep catalina >/dev/null 2>&1

摘自 catalina.sh 文件

 if [ ! -z "$CATALINA_PID" ]; then
    if [ -f "$CATALINA_PID" ]; then
      if [ -s "$CATALINA_PID" ]; then
        echo "Existing PID file found during start."
        if [ -r "$CATALINA_PID" ]; then
          PID=`cat "$CATALINA_PID"`
          ps -fp $PID |grep catalina >/dev/null 2>&1  #this line
          if [ $? -eq 0 ] ; then
            echo "Tomcat appears to still be running with PID $PID. Start aborted."
            echo "If the following process is not a Tomcat process, remove the PID file and try again:"
            ps -f -p $PID
            exit 1
          else
            echo "Removing/clearing stale PID file."
            rm -f "$CATALINA_PID" >/dev/null 2>&1
            if [ $? != 0 ]; then
              if [ -w "$CATALINA_PID" ]; then
                cat /dev/null > "$CATALINA_PID"
              else
                echo "Unable to remove or clear stale PID file. Start aborted."
                exit 1
              fi
            fi
          fi
        else
          echo "Unable to read PID file. Start aborted."
于 2018-11-22T13:37:48.910 回答
1

你可以到 ${CATALINA_HOME}/logs/ 的位置打开 catalina.pid。在这里,我们将获得 pid。然后终止进程。杀死 -9 pid

于 2015-03-20T07:41:51.197 回答
1

你试过$ sudo ./catalina.sh stop吗?它在我的情况下有效。

于 2016-04-22T07:33:14.437 回答
1

第一 -->rm catalina.engine

那么 -->./startup.sh

下次你重新启动 -->./shutdown.sh -force

于 2016-07-14T10:44:04.957 回答
1

您的情况下缺少 catalina.pid 。

该文件位于 {your_jira_dir}/work/catalina.pid 下,它包含 jira 当前实例的 pid。

所以

ps aux | grep jira
  • 找到正确的条目
  • 复制输出的 PID 并创建一个仅包含此 PID 的文件。- 确保它可以被运行 jira 的用户读写。
  • 再次尝试关闭 jira。
于 2019-03-30T09:24:42.020 回答
1

sudo systemctl stop tomcat

为我做的

于 2019-08-25T01:30:48.353 回答
0

如果您看到此类问题,您可以随时尝试终止该进程。您可以从 PS 或 pid 文件中获取进程 ID 并终止该进程。

于 2015-08-25T19:30:45.257 回答
0

就我而言,tomcat.pid 位于 /opt/tomcat/temp/ 下。试图手动删除它。仍然没有工作。查看/opt/tomcat/bin/中的setnev.sh后,注意有一行代码定义了JAVA_HOME:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre

注释掉这一行,重启Tomcat。有用!因为我做了一个 yum 更新和一个新的从 1.8.0.212 到 1.8.0.222 的 Java 小版本更新。经验教训:应避免硬编码。

于 2019-08-08T13:22:38.607 回答
0

我遇到了与下面提到的相同的问题。

找到 PID 文件,但没有找到匹配的进程。停止中止。

解决方法是通过以下命令找到linux机器的空闲空间

df -h

上面的命令显示我的主目录被 100% 使用。然后使用以下命令确定要删除的文件

杜 -h。

删除后,可以在linux机器上进行IO操作,tomcat也可以启动了。

于 2020-02-12T19:05:24.250 回答
0

按照这个:)

  1. 打开/etc/systemd/system/tomcat.service

你能看到JAVA_HOME吗?: 修改如下

Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"

在 1.11.0 - 插入您自己的 Jdk 版本

  1. systemctl daemon-reload

  2. sudo systemctl start tomcat


现在,在 Eclipse -> 添加服务器 -> .....

被击中tomcat installation directory ??

  1. Extract您已经下载的 tomcat tar 文件。
  2. 现在回到 Eclipse -> 添加服务器 ->浏览-> Point to extracted file (在上面的步骤 1 中完成 :)

如果您也被其他地方击中,请发表评论)

于 2021-01-21T08:38:28.480 回答