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

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


当前回答

杀死特定端口上所有进程的最佳方法;

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

其他回答

杀死特定端口上所有进程的最佳方法;

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

如果您想终止运行在端口号8080上的进程,那么首先需要找到8080端口进程标识号(PID),然后终止它。执行如下命令,查询到8080端口号PID:

sudo lsof -t -i:8080

在这里,

Sudo -命令询问管理员权限(用户id和密码)。 lsof -文件列表(也用于列出相关进程) -t -只显示进程ID -i -只显示Internet连接相关进程 :8080 -只显示该端口号下的进程

所以你现在可以使用以下命令轻松地杀死你的PID:

sudo kill -9 <PID>

在这里,

Kill -终止进程的命令 -9 -强力

您可以使用一个命令来杀死特定端口上的进程,使用以下命令:

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

欲了解更多信息,请参见以下链接 如何杀死一个进程在特定的端口上的linux

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

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

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

使用方法: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 8080/tcp将打印该端口绑定进程的PID。

这个fuser -k 8080/tcp会终止这个进程。

仅适用于Linux。更通用的是使用lsof -i4(或IPv6的6)。