如何在Linux上终止运行在特定端口的进程?

1427

我尝试使用来自tomcat /bin目录的./shutdown.sh关闭Tomcat,但发现服务器未能正确关闭。因此,我无法重新启动。
我的Tomcat正在端口8080运行。

我想杀掉在8080端口运行的Tomcat进程。我首先想获取在特定端口(8080)上运行的进程列表,以便选择要终止的进程。


3
可能是与“shell脚本:如何杀掉占用3000端口的进程?”类似的问题。 - Ciro Santilli OurBigBook.com
35个回答

42
获取任务的PID并将其杀死。
lsof -ti:8080 | xargs kill

谢谢回答。在 Mac OS 上非常流畅地工作。你是最好的。点赞! - AMIC MING
2
也可以很好地处理端口范围,例如 lsof -ti:8080-8089 | xargs kill - dvlsg

36

首先需要做的是运行(将端口号替换为您自己的):

fuser -k 3000/tcp

这将释放该端口。在运行上述命令后,请运行:

service docker restart

你的问题已经解决。


好的答案,谢谢。它对我也有效。 - perymerdeka
谢谢大家,感激不尽。 - Anshuman Bardhan

29

试试这样做,

 sudo fuser -n tcp -k 8080

23

选择端口号并应用grep到 netstat 命令中,如下所示

netstat -ap | grep :7070

控制台输出

tcp 0 0 :::7070 :::* LISTEN 3332/java

根据 PID(进程标识号)停止该 服务

kill -9 3332

23

这将关闭在80端口运行的程序

sudo fuser -k 80/tcp

正确但是多余 - 与上面的答案相同 - angstyloop

19

运行以下命令查找8080端口号的PID:

sudo lsof -t -i:8080

现在,您可以使用以下命令轻松杀死PID:

sudo kill -9

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

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


16

您可以了解系统中运行的所有端口列表及其详细信息(pid、地址等):

netstat -tulpn

通过在以下命令中提供端口号,您可以了解特定端口号的详细信息:

sudo netstat -lutnp | grep -w '{port_number}'

例如:sudo netstat -lutnp | grep -w '8080'

会提供类似这样的详细信息:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

如果您想使用进程ID杀死一个进程,则执行: kill -9 {PID}

如果您想使用端口号杀死一个进程,则执行: fuser -n tcp {port_number}

如果无法访问,请使用sudo


15

Linux: 如果您知道端口,首先可以查找此命令的进程ID:

netstat -tulpn 

example:-

 Local Address  Foreign Address  State    PID/Program name

  :::3000       :::*             LISTEN    15986/node 

然后您可以执行kill进程。运行以下命令:

kill -9 PID

示例:

kill -9 15986


15
  1. lsof -i tcp:8000 此命令列出运行在8000端口的进程信息。

  2. kill -9 [PID] 此命令终止指定进程。


我刚刚注意到几周前我不小心给这个回答点了踩,如果你稍微编辑一下你的回答,我应该就能取消踩了。 - Robin-Hoodie

14

Linux: 如果您知道端口号,可以使用此命令:

netstat -plten | grep LISTEN | grep 8080

AIX:

netstat -Aan | grep LISTEN | grep 8080

然后您需要取第一列(例如:f100050000b05bb8)并运行以下命令:

rmsock f100050000b05bb8 tcpcb

终止进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接