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

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


当前回答

简单地运行这个命令。别忘了用你的端口替换端口号;)

  kill -9 $(sudo lsof -t -i:portnumber)

其他回答

Linux:如果你知道端口,你可以使用这个命令:

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

然后使用第一列(例如:f100050000b05bb8)并运行以下命令:

rmsock f100050000b05bb8 tcpcb

杀死进程。

kill -9 ' fuser 8080/tcp|xargs -n 1 ',该命令同时关闭监听8080端口的tcp连接进程

这在mac中很管用

sudo kill -9 $(netstat -vnap tcp | grep PORT | awk -F " " '{print $9}')

Git Bash的其他方式:

stopProcessByPortNumber() {
port=":${1}"
portStrLine="$(netstat -ano | findstr LISTENING | findstr $port)"
processId="$(grep -oP '(\d+)(?!.*\d)' <<< $portStrLine)"
echo $processId
taskkill -PID $processId -F
}

根据@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报告的进程号