在 Ubuntu/Debian 下的 lsof 命令中,我看到很多行如下:
PROGRAM 829 root 140u sock 0,8 0t0 244182 protocol: TCP
这些线是什么?
它们可能是 TCP 连接尝试失败的结果吗?
在 Ubuntu/Debian 下的 lsof 命令中,我看到很多行如下:
PROGRAM 829 root 140u sock 0,8 0t0 244182 protocol: TCP
这些线是什么?
它们可能是 TCP 连接尝试失败的结果吗?
lsof
当无法找到有关 TCP 套接字的其他信息时显示此行:它知道这是一个 TCP 套接字,但不知道更多。我能想到的原因有两个:
不太可能:套接字仍然没有侦听或连接:例如,服务器或客户端用于
socket(AF_INET, SOCK_STREAM, 0)
创建 TCP 套接字但尚未调用listen(2)
或connect(2)
。这可能是由于缺乏资源或软件错误造成的。今天最有可能:被看到的进程
lsof
在其他网络命名空间中运行,通常在容器(Docker、LXC、LXD ...)中,因此lsof
无法访问相关信息并且不会显示它。然后,您应该
lsof
从与进程相同的网络命名空间运行。lsns
and命令对此nsenter
有很大帮助。对于您的情况,这可能会起作用:在正常情况下
lsof
会显示IPv4
或IPv6
代替sock
并且会有额外的信息,比如监听端口或涉及的地址。即使连接仍在进行中,也会显示所涉及的地址,例如SYN_SENT
。