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

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


当前回答

输出所有在<port_number>上运行的进程id:

fuser -n tcp <port_number> 

它还输出一些东西到stderr,所以:

fuser -n tcp <port_number> 2> /dev/null

然后我们可以将这些进程id提供给kill命令:

sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

如果你经常这样做,你也可以把它放在一个函数中:

function killport() {
    sudo kill $(fuser -n tcp $1 2> /dev/null)
}

其他回答

首先你需要做的是运行(替换为你的端口号):

fuser -k 3000/tcp

这将释放端口。运行上述命令后,执行以下命令:

service docker restart

你的问题解决了。

这是Windows的解决方案:

C:\Users\Niroshan>netstat -ano|findstr "PID :8080"

Proto Local Address Foreign Address State PID
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 18264

taskkill /pid 18264 /f

使用命令

 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表示进程将被强制终止。

输出所有在<port_number>上运行的进程id:

fuser -n tcp <port_number> 

它还输出一些东西到stderr,所以:

fuser -n tcp <port_number> 2> /dev/null

然后我们可以将这些进程id提供给kill命令:

sudo kill $(fuser -n tcp <port_number> 2> /dev/null)

如果你经常这样做,你也可以把它放在一个函数中:

function killport() {
    sudo kill $(fuser -n tcp $1 2> /dev/null)
}

在Windows中,它将是netstat -ano | grep "8080",我们得到以下消息TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 10076

我们可以使用taskkill /F /PID 10076来终止PID