使用 Ubuntu Server 16。我的机器上有一个 SCTP 端口打开,我需要找到它并杀死它(无需重新启动)。
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。