使用 Ubuntu Server 16。我机器上的某个东西打开了一个 SCTP 端口,我需要找到它并杀死它(无需重新启动)。
lsof 不显示 SCTP 套接字,只显示 TCP 和 UDP。
我正在浏览所有这些网络实用程序,对于这样一个旧标准,SCTP 支持令人惊讶地稀缺。我netstat通过从这里构建最前沿的网络工具来使用 SCTP 。sudo netstat --sctp -tulpn显示了一些打开的 SCTP 连接,但没有说明哪个进程有它们。它只显示 UDP 和 TCP 套接字的 PID。
有点迂回曲折的方式,但似乎对我有用。希望有人会找到更好的方法,但我的第一个想法(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
Run Code Online (Sandbox Code Playgroud)
使用该 inode(在我的示例中为 1895802)并使用lsof它来查找谁拥有它:
$ lsof -R | grep 1895802
socat 8697 2045 root 5u sock 1895802 0t0 SCTP ENDPT: b6d72780 0.0.0.0[123]
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用socat套接字侦听 123/sctp。8697 是pid。
| 归档时间: |
|
| 查看次数: |
10941 次 |
| 最近记录: |