我尝试在tomcat /bin目录下使用。/shutdown.sh关闭tomcat。但发现服务器没有正确关闭。因此我无法重新启动我的tomcat运行在端口8080上。

我想终止在8080上运行的tomcat进程。我首先想要在特定端口(8080)上运行的进程列表,以便选择要终止哪个进程。


当前回答

根据@veer7所说:

如果你想知道端口上有什么,在杀死它之前先这么做。

$ sudo netstat -plten |grep java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      1000       906726      25296/java      
tcp6       0      0 :::8009                 :::*                    LISTEN      1000       907503      25296/java      
tcp6       0      0 :::8080                 :::*                    LISTEN      1000       907499      25296/java      
$ ps 25296
  PID TTY      STAT   TIME COMMAND
25296 ?        Sl     0:16 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Dcatalina.base=/hom

使用'ps'和netstat报告的进程号

其他回答

像这样试试,

 sudo fuser -n tcp -k 8080

使用命令

 sudo netstat -plten |grep java

使用grep Java作为tomcat使用Java作为他们的进程。

它将显示带有端口号和进程id的进程列表

tcp6       0      0 :::8080                 :::*                    LISTEN      
1000       30070621    16085/java

“/java”前面的数字是进程号。现在使用kill命令终止进程

kill -9 16085

-9表示进程将被强制终止。

在我的情况下,cent os在建议的答案中有一些问题。所以我使用了以下解决方案:

  ss -tanp | grep 65432 | head -1 | grep -Po "(?<=pid=).*(?=,)" | xargs kill

选择端口号并应用netstat命令中的grep,如下所示

netstat -ap | grep :7070

控制台输出

tcp 0 0:::7070:::* LISTEN 3332/java

根据PID(进程标识号)终止服务

kill -9 3332

一个班轮,节省时间

kill -9 $(lsof -t -i tcp:8080)

此处解释:使用lsof和kill的组合

root@localhost:~# lsof -i tcp:8080
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    23672 sine  238u  IPv6 3028222      0t0  TCP localhost:http-alt (LISTEN)

选择pid并使用kill

kill 23672