java-如何在终端中杀死该tomcat进程?

使用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
Tom Maxwell asked 2020-02-13T21:04:21Z
14个解决方案
122 votes

无需知道Tomcat的pid(进程ID)即可将其杀死。 您可以使用以下命令来杀死Tomcat:

pkill -9 -f tomcat
Darshan answered 2020-02-13T21:04:37Z
23 votes

ps -ef | grep tomcat | awk'{print $ 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选项将其杀死

希望这可以帮助。

suryakrupa answered 2020-02-13T21:05:28Z
18 votes

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

Aurand answered 2020-02-13T21:05:48Z
12 votes

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

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

    grep

    这也会搜索tomcat,但是会错过grep条目,因为grep tomcat与它不匹配。

  • 与ps一起使用自定义输出格式

    grep

    这仅显示pid和进程名称,而没有进程参数。 因此,grep列为grep,而不是grep tomcat

Olaf Dietsche answered 2020-02-13T21:06:35Z
11 votes

只需在终端中键入以下命令

ps -ef |grep 'catalina'

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

 kill -9 processid
ASR answered 2020-02-13T21:06:59Z
2 votes
ps -ef

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

| grep tomcat

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

Chris Knight answered 2020-02-13T21:07:24Z
2 votes
ps -Af | grep "tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
Vaibhav answered 2020-02-13T21:07:39Z
2 votes

tomcat/bin/catalina.sh

在注释部分结束后添加以下行:

CATALINA_PID=someFile.txt

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

kill -9 `cat someFile.txt`
Shrikar Kulkarni answered 2020-02-13T21:08:08Z
1 votes

这为我工作:

步骤1:回声ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'

上面的命令返回“ process_id”

步骤2:杀死-9 processid
//此process_id与步骤1相同:

jaydip jadhav answered 2020-02-13T21:08:45Z
0 votes

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

ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
dobrivoje answered 2020-02-13T21:09:06Z
0 votes

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

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

在shell脚本文件中为我工作。

ccjeaty answered 2020-02-13T21:09:34Z
0 votes
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')

NR是输入文件中的记录数。awk可以查找或替换文本

user8357232 answered 2020-02-13T21:09:54Z
0 votes

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

tr -s " " | cut -d " " -f 2

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

Prathik Rajendran M answered 2020-02-13T21:10:24Z
0 votes

这非常有效(查找tomcat进程并强行杀死它们)

ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9
Pravin answered 2020-02-13T21:10:43Z
translate from https://stackoverflow.com:/questions/15236308/how-do-i-kill-this-tomcat-process-in-terminal