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입니다.