使用 Ubuntu Server 16。
lsof
不顯示 SCTP 套接字,僅顯示 TCP 和 UDP。
我正在查看所有這些網路實用程序,對於這樣一個舊標準來說,SCTP 支援非常少。我netstat
透過建構最先進的網路工具來使用 SCTP從這裡。sudo netstat --sctp -tulpn
顯示一些開啟的 SCTP 連接,但沒有說明哪個程序擁有這些連接。它僅顯示 UDP 和 TCP 套接字的 PID。
答案1
有點迂迴的方式,但它似乎對我有用。希望有人能找到更好的方法,但我的第一個想法(ss/netstat)似乎不承認 SCTP。
首先,使用procfs
尋找 sctp 連接的 inode:
$ cat /proc/net/sctp/eps
ENDPT SOCK STY SST HBKT LPORT UID INODE LADDRS
b6d72780 a8903800 2 10 48 123 0 1895802 0.0.0.0
獲取該 inode(在我的示例中為 1895802)並用於lsof
查找誰擁有它:
$ lsof -R | grep 1895802
socat 8697 2045 root 5u sock 1895802 0t0 SCTP ENDPT: b6d72780 0.0.0.0[123]
正如你所看到的,我用來socat
在 123/sctp 上建立一個套接字。 8697 是 pid。