释放TCP / IP端口?


Answers:


214

正如其他人所说,您将必须杀死正在该端口上侦听的所有进程。最简单的方法是使用fuser(1)命令。例如,要查看所有在端口80上侦听http请求的进程(以root身份运行或使用sudo):

# fuser 80/tcp

如果要杀死它们,则只需添加-k选项。


1
我发现向端口发送请求也会清除该请求(尽管我不是Linux专家)
Matej 2014年

1
要在Debian上安装热熔器:sudo apt-get install psmisc(bitflop.com/document/107
Korneel 2014年

1
它奏效了,但是我也必须在CentOs 7(sudo yum install psmisc)上安装psmisc
Marlon Bernardes

1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky '16


16

您可以使用tcpkilldsniff软件包的一部分)取消所需端口上的连接:

sudo tcpkill -9 port PORT_NUMBER

11
这只是挂$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic

16

在终端类型中:

netstat -anp|grep "port_number"

它将显示端口详细信息。转到最后一列。它将采用这种格式。例如:-PID / java

然后执行:

kill -9 PID. Worked on Centos5

对于MAC:

lsof -n -i :'port-number' | grep LISTEN

样品响应:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

然后执行:

kill -9 PID 

在Macbook上工作


显然,如果该端口的PID
列为

1
...如果您没有权限查看此过程,则会发生这种情况...尝试sudo netstat实际查看PID :)
Anentropic

我试图通过腻子cli杀死亚马逊ec2实例上的端口。永远都说它没有进程在运行,但是port(一个有角度的应用程序是4200)仍然打开,这是唯一对我有用的命令。
vtechmonkey

9

"netstat --programs"假设您是root用户,该命令将为您提供过程信息。然后,您将不得不终止可能会再次启动的“令人讨厌”的过程,以至于惹恼您:-)。

您实际上想在这里实现什么?解决方案将根据持有这些端口的过程而有所不同。


8

要检查所有端口:

netstat -lnp

要关闭开放端口:

fuser -k port_no/tcp

例:

fuser -k 8080/tcp

在这两种情况下,都可以sudo根据需要使用命令。


7

终止正在侦听该端口的进程。我相信netstat会向您显示进程ID。


3
netstat -anp | grep <端口>的最后一列具有进程
user1747935

2

如果您真的想立即终止进程,则向其发送KILL信号而不是TERM信号(后者是一个停止请求,第一个将立即生效而不进行任何清理)。这很容易做到:

kill -KILL <pid>

但是请注意,根据您要停止的程序,这样做时其状态可能会严重损坏。通常,您只希望在正常终止不起作用时发送KILL信号。我想知道您尝试解决的根本问题是什么,而杀戮是否是正确的解决方案。




By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.