检查Linux中哪个进程打开了SCTP端口

检查Linux中哪个进程打开了SCTP端口

使用 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。

相关内容