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

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


当前回答

首先检查进程netstat -lt 检查进程id fuser <端口号>/tcp Kill <进程id>

其他回答

可以使用lsof命令。 假设端口号是8090

lsof -i:8090

该命令返回该端口上的开放进程列表。

之类的……

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ssh 75782 eoin 5u IPv6 0x01c1c234 0t0 TCP localhost:8090 (LISTEN)

要释放端口,杀死使用它的进程(进程id是75782)…

kill -9 75782

这个方法对我很管用。 这是原文的链接:link

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

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

使用这个脚本,它比其他选项更友好,检查端口是否实际在使用。

使用方法:openport 1234

openport() {
  # sed = second line https://stackoverflow.com/a/1429628/152711
  # awk = second word https://unix.stackexchange.com/a/174038
  processId=$(lsof -i tcp:$1 | sed -n 2p | awk '{print $2}')
  if [ ! -z "$processId" ] # Non-null https://www.cyberciti.biz/faq/bash-shell-find-out-if-a-variable-has-null-value-or-not/
  then
    echo Killing $processId
    kill -9 $processId
  else
    echo No process found
  fi
}

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

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

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

rmsock f100050000b05bb8 tcpcb

杀死进程。

只有以下命令对我有用:

ps -aux | grep 8000

然后:

sudo kill <PID>