Ubuntu Server 16 を使用しています。マシン上の何かに SCTP ポートが開いているので、それを見つけて強制終了する必要があります (再起動せずに)。
lsof
SCTP ソケットは表示されず、TCP と UDP のみが表示されます。
私はこれらのネットワークユーティリティをすべて調べていますが、SCTPのサポートは、このような古い標準に対して驚くほど少ないです。私は、netstat
最先端のnet-toolsを構築することで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 です。