如何关闭或取消绑定流氓应用程序打开的端口?


19

我正在使用Fedora 13 64bit。我的eclipse程序在端口9050上启动了服务器,但是我关闭了该程序,eclipse无法正确关闭服务器。重新启动蚀不起作用。

如何从命令行强制关闭或解除绑定端口?

我知道重新启动或注销然后再重新启动将清除端口,但是这个过程对我来说要慢得多。我正在寻找在命令行中强制关闭端口的方法。

Answers:


10

强制关闭监听端口的唯一方法是杀死正在监听的端口。使用lsofnetstatfuser-如根-找出进程ID。一旦进程退出(通过自身退出或被杀死),内核将自动清理它打开的所有套接字。(但是,在某些情况下,可能会拒绝程序在同一端口上监听几分钟;在这种情况下,您所能做的就是等待。)


19
lsof -n -i

找到您要查找的进程并终止它。

lsof手册

-n此选项禁止将网络号转换为网络文件的主机名。禁止转换可能会使lsof运行更快。当主机名查找无法正常工作时,它也很有用。

-i [i]此选项选择文件列表,其Internet地址与i中指定的地址相匹配。如果未指定地址,则此选项选择所有Internet和x.25(HP-UX)网络文件的列表。

我认为这个问题的答案相同。


7
抛出| grep ":9050"(或任何端口号)以轻松过滤输出
isaacparrot 2014年

9

您可以将fuser命令与-k开关一起使用。

例如,要关闭端口111,您可以执行以下操作:(fuser -k 111/tcp 这也省去了查找进程ID的麻烦,因为它可以像保险丝一样暗中杀死它)

请注意,某些进程在关闭后会自动重新启动。为此,您需要检查每个进程的配置文件以提出适当的解决方法。


-3

我有同样的问题,只是寻找在Windows上使用cmd命令监听端口的进程

netstat -a -b

然后您可以使用任务管理器将其关闭


2
抱歉,我投了反对票。您提到“在Windows上”。netstat的“ -b”参数显示可执行文件的名称,特定于Microsoft Windows。(Unix netstat变体可能具有相似的功能,但通常不使用相同的参数。)但是,该问题表示“ Fedora”,因此该问题的询问者正在寻找有关Fedora 13 64bit(不同操作系统)的信息。 netstat的Fedora手册页指示using -p显示PID(可用于标识可执行文件的名称)。
TOOGAM'7

1
这个答案有几个错误。答案包含可以避免的语法错误。答案也不适用于问题的第一句话中明确提到的Fedora。30分钟前提交此答案时,好像问题没有包含此信息,自2011年7月以来(该问题已将近5年前),该问题尚未得到编辑。因此,我将这个答案当作是“我也是”答案,实际上很少有帮助。
Ramhound
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.