【问题标题】:How do I kill this tomcat process in Terminal?如何在终端中杀死这个 tomcat 进程?
【发布时间】:2013-02-20 14:12:59
【问题描述】:

使用ps -ef | grep tomcat 我发现了一个正在运行的tomcat 服务器。我试过kill -9 {id},但它返回“没有这样的过程”。我究竟做错了什么?

这是一个例子:

Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep tomcat
2043706342 39707 39695   0  3:40PM ttys000    0:00.00 grep tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process

【问题讨论】:

  • 其实就是grep搜索tomcat。

标签: java linux unix tomcat terminal


【解决方案1】:

Tomcat 没有运行。您的搜索向您展示了 grep 进程,该进程正在搜索 tomcat。当然,当您看到该输出时,grep 已不再运行,因此 pid 不再有效。

【讨论】:

  • 下次使用 ps -ef | grep [t]omcat
【解决方案2】:
ps -ef

将列出您当前正在运行的所有进程

| grep tomcat

将输出传递给grep 并查找tomcat 的实例。由于grep 本身就是一个进程,因此它是从您的命令返回的。但是,您的输出显示没有运行 Tomcat 的进程。

【讨论】:

    【解决方案3】:

    正如其他人已经指出的那样,您已经看到了 grep 过程。如果你想将输出限制为 tomcat 本身,你有两种选择

    • 将第一个搜索到的字符包装在一个字符类中

      ps -ef | grep '[t]omcat'
      

      这也搜索 tomcat,但错过了 grep [t]omcat 条目,因为它与 [t]omcat 不匹配。

    • 使用 ps 自定义输出格式

      ps -e -o pid,comm | grep tomcat
      

      这仅显示进程的 pid 和名称,不显示进程参数。所以,grep 被列为grep 而不是grep tomcat

    【讨论】:

      【解决方案4】:

      只需在终端输入以下命令

      ps -ef |grep 'catalina'
      

      复制进程ID的值,然后键入以下命令并粘贴进程ID

       kill -9 processid
      

      【讨论】:

      • 这是第一个在 Linux Mint 18.3 上为我工作的,选择的答案没有效果。
      • 当tomcat通过eclipse运行并且进程名称为“java”时,这对我有用。我的另一个“java”进程是eclipse。请参阅“org.apache.catalina.startup.Bootstrap”的相关答案。
      【解决方案5】:

      ps -ef | grep tomcat | awk '{打印 $2}' | xargs 杀死 -9

      https://gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076

      第 1 部分

      ps -ef | grep tomcat => 用tomcat grep 获取所有进程

      第 2 部分

      一旦我们有了流程详细信息,我们就将其通过管道传输到脚本的第 2 部分

      awk '{print $2}' | xargs kill -9 => 获取第二列 [Process id] 并使用 -9 选项杀死它们

      希望这会有所帮助。

      【讨论】:

        【解决方案6】:

        不需要知道 Tomcat 的 pid(进程 ID)来杀死它。可以使用以下命令杀死Tomcat:

        pkill -9 -f tomcat
        

        【讨论】:

        • 你拯救了我的一天。
        • 又短又脆。顺便说一句,我有 2 个 tomcat,一个是 tomcat 7,另一个是 tomcat 5 进程,所以它正在杀死 2。我使用了稍微不同的变体 pkill -9 -f /tomcat7pathpkill -9 -f /tomcat5path,这样我就可以一次杀死一个。很容易配置为alias,因为它在命令中没有反引号和单引号....很好的答案
        • 请注意,“-f”匹配所有命令行参数,而不仅仅是进程名,所以即使进程名是“java”,它仍然会匹配。 "pgrep -f tomcat" 显示将匹配的内容。
        • "pkill -9 -f catalina" 也适用于我。我的eclipse“java”进程在“ps -ef”中也有“tomcat”,但由于某种原因“pgrep -f tomcat”不匹配。
        【解决方案7】:

        我不得不终止服务器上许多java进程中的activeMQ java进程,而这个是由特定用户启动的(用户名为activemq)。 如此好的分离方法可能是由特定用户启动一个进程:

        ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
        

        【讨论】:

          【解决方案8】:

          这对我有用:

          第一步:回显ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'

          以上命令返回“process_id”

          第二步:kill -9 process_id
          // 这个process_id和第一步一样:输出

          【讨论】:

            【解决方案9】:

            正如@Aurand 所说,tomcat 没有运行。你可以使用

            ps -ef |grep java | grep tomcat 命令忽略ps 程序。

            在 shell scripte 文件中为我工作。

            【讨论】:

              【解决方案10】:
              ps -Af | grep "tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
              

              【讨论】:

              • 这是最好的答案。谢谢。
              【解决方案11】:

              tomcat/bin/catalina.sh

              在评论部分结束后添加以下行:

              CATALINA_PID=someFile.txt
              

              然后,要杀死正在运行的 Tomcat 实例,您可以使用:

              kill -9 `cat someFile.txt`
              

              【讨论】:

                【解决方案12】:
                kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
                

                NR 表示输入文件中的记录数。 awk可以查找或替换文字

                【讨论】:

                  【解决方案13】:

                  要按名称杀死进程,我使用以下命令

                  ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9

                  tr -s " " | cut -d " " -f 2awk '{print $2}' 相同。 tr 将制表符空格压缩为单个空格,cut 提供<SPACE> 作为分隔符,并请求第二列。 ps aux 输出中的第二列是进程 ID。

                  【讨论】:

                    【解决方案14】:

                    这很好用(找到tomcat进程并强行杀死它们)

                    ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9
                    

                    【讨论】:

                    • 这为我返回了 2 个 pid,它会从其中杀死哪一个?
                    【解决方案15】:

                    对于 Mac 用户,

                    这是唯一适合我的解决方案。

                    sudo kill -9 `sudo lsof -t -i:8080`
                    

                    注意:将 8080 替换为您的端口号

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-09-14
                      • 2021-07-24
                      • 1970-01-01
                      • 1970-01-01
                      • 2017-07-03
                      相关资源
                      最近更新 更多