178

netstat -tulnap 显示正在使用的端口。如何在 Linux 中释放端口?

4

11 回答 11

248

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

# fuser 80/tcp

如果你想杀死他们,那么只需添加-k选项。

于 2009-04-15T07:55:25.237 回答
102

要在 Linux 中终止特定端口,请使用以下命令

sudo fuser -k Port_Number/tcp

替换Port_Number为您占用的端口。

于 2015-06-10T10:03:24.137 回答
26

在终端类型中:

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 上工作

于 2016-06-29T04:46:26.230 回答
19

您可以使用tcpkilldsniff包的一部分)来终止您需要的端口上的连接:

sudo tcpkill -9 port PORT_NUMBER
于 2014-02-27T16:45:45.913 回答
18

检查所有端口:

netstat -lnp

关闭一个打开的端口:

fuser -k port_no/tcp

例子:

fuser -k 8080/tcp

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

于 2019-07-15T11:55:01.500 回答
11

"netstat --programs"假设您是root用户,该命令将为您提供进程信息。然后你将不得不杀死“冒犯”的进程,它很可能会再次启动只是为了惹恼你。

根据您实际尝试实现的目标,该问题的解决方案将根据持有这些端口的进程而有所不同。例如,您可能需要禁用服务(假设它们不需要)或将它们配置为使用不同的端口(如果您确实需要它们但您需要更多的端口)。

于 2009-04-15T07:31:36.777 回答
7

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

于 2009-04-15T07:12:07.727 回答
1

如果你真的想立即杀死一个进程,你可以发送一个 KILL 信号而不是一个 TERM 信号(后者是一个停止请求,第一个将立即生效而无需任何清理)。这很容易做到:

kill -KILL <pid>

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

于 2009-04-15T09:36:45.197 回答
-1

我认为唯一的方法是停止打开端口的进程。

于 2009-04-15T07:12:37.960 回答
-6

sudo killall -9 "进程名"

于 2013-03-28T19:23:31.343 回答
-14

关闭计算机总是会杀死我的进程。

于 2013-07-18T13:04:30.630 回答