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

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


当前回答

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

使用方法: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
}

其他回答

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

fuser -k 3000/tcp

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

service docker restart

你的问题解决了。

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

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

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

rmsock f100050000b05bb8 tcpcb

杀死进程。

如果端口上的服务没有响应,如何杀死进程

timeout 1 telnet localhost 8080 2>&1 | if grep -q 'Unable'; then sudo kill -9 $(sudo lsof -t -i:8080); fi

它的作用

启动“timeout”一秒,使telnet退出 ' 2>&1 | '管道错误消息,没有退出 如果错误消息包含'Unable',则运行代码杀死锁定端口8080的进程

这可以放在一个文件中,并从'sudo crontab'定期运行

这将杀死端口80上运行的程序

sudo fuser -k 80/tcp

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

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