Lsof
在 lsof 輸出中,那些“襪子”線是什麼?
在 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
有很大幫助。對於您的情況,這可能會起作用:nsenter -t 829 --net lsof -n -p 829
在正常情況下
lsof
會顯示IPv4
或IPv6
代替sock
並且會有額外的資訊,比如監聽埠或涉及的地址。即使連接仍在進行中,也會顯示所涉及的地址,例如SYN_SENT
。