Ich verwende Ubuntu Server 16. Irgendwas auf meinem Rechner hat einen offenen SCTP-Port und ich muss ihn finden und beenden (ohne Neustart).
lsof
zeigt keine SCTP-Sockets an, nur TCP und UDP.
Ich habe mir alle diese Netzwerk-Dienstprogramme angesehen und die SCTP-Unterstützung ist für einen so alten Standard überraschend spärlich. Ich habe netstat
mit SCTP gearbeitet, indem ich die neuesten Netzwerk-Tools erstellt habe .von hier. sudo netstat --sctp -tulpn
zeigt einige offene SCTP-Verbindungen an, sagt aber nicht, welcher Prozess sie hat. Es werden nur die PIDs für UDP- und TCP-Sockets angezeigt.
Antwort1
Das ist ein ziemlich umständlicher Umweg, aber bei mir scheint es zu funktionieren. Ich hoffe, dass jemand einen besseren Weg findet, aber meine ersten Gedanken (ss/netstat) scheinen SCTP nicht zu berücksichtigen.
Verwenden Sie zunächst, procfs
um den Inode der SCTP-Verbindung zu finden:
$ 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
Nehmen Sie diesen Inode (1895802 in meinem Beispiel) und verwenden Sie ihn, lsof
um herauszufinden, wem er gehört:
$ lsof -R | grep 1895802
socat 8697 2045 root 5u sock 1895802 0t0 SCTP ENDPT: b6d72780 0.0.0.0[123]
Wie Sie sehen, habe ich socat
einen Socket erstellt, der auf 123/sctp lauscht. 8697 ist die PID.