关闭没有进程的 tcp 端口

关闭没有进程的 tcp 端口

我最终处于 TCP 端口处于监听模式但未分配任何进程的情况。

有没有办法在不重新启动服务器的情况下关闭此端口?

检查端口状态:

me> netstat -tan | grep 8888
tcp        0      0 :::8888                :::*                    LISTEN

寻找负责流程:

me> lsof -i -P | grep 8888

上述命令没有返回任何内容

答案1

尝试netstat -ltpn | grep 8888

答案2

运行

fuser 8888/tcp

这应该列出端口上运行的 pid。

答案3

你描述的是一个不可能的情况。

我认为前面的发帖者忽略了这样一个事实:你正试图将一个端口映射到一个不属于你的进程。因此,你lsof不会返回任何结果,因为这些工具没有权限查看/proc有助于该端口 -> PID 映射的条目。你的netstat命令也缺少 -p 标志。运行这些命令,然后root事情就会清楚得多。

答案4

sudo lsof -i tcp:8888如果 netstat 只是进程名称的破折号,则页面建议运行。

就我而言,它最终归属于僵尸过程很奇怪,我知道。

$ sudo lsof -i tcp:8888
COMMAND       PID USER FD   TYPE  DEVICE SIZE/OFF NODE NAME
my-proc-name 38116 root   16u  IPv6 326070554      0t0  TCP *:8888 (LISTEN)

然后您可以在“ps”输出中查找 38116(在本例中)来查看已停止的进程。

ps -ef grep 38116
root     38116     1  0 Apr24 ?        00:06:58 [my-proc-name] <defunct>

(我猜它是某种还没有清理的僵尸进程?)。

其他选项

sudo ss -apn | grep 8888

相关内容