如何在终端中杀死这个 tomcat 进程?

Posted

技术标签:

【中文标题】如何在终端中杀死这个 tomcat 进程?【英文标题】:How do I kill this tomcat process in Terminal? 【发布时间】: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。 【参考方案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==2print $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 替换为您的端口号

【讨论】:

以上是关于如何在终端中杀死这个 tomcat 进程?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 OS X 终端杀死所有同名进程

如何防止 Spring Boot / Tomcat (Java8) 进程被 OOM 杀死?

教你如何找到正在运行中的进程 ID 并杀死它

Linux下Tomcat的启动关闭杀死进程

Linux下Tomcat的启动关闭杀死进程

从 Eclipse 运行时如何杀死 Tomcat?