Mac OS Xでネットワーク接続をリッスンするすべてのプロセスを取得しようとしています。netstat
には-p
オプションがなく、lsofを使用しています。
lsof -i -sTCP:LISTEN
リスニングプロセスの公平なリストを提供しますが、すべてではありません。たとえば、接続をリッスンするプロセスがあるポート10080にtelnetで接続できますが、これはlsof
の出力には表示されません。何が欠けていますか?
$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
だが
$ Sudo lsof -n -i | grep 10080
$
_Sudo lsof -iTCP -sTCP:LISTEN
Sudo lsof -iTCP -sTCP:LISTEN -P
Sudo lsof -iTCP -sTCP:LISTEN -P -n
Sudo lsof -iTCP -sTCP:LISTEN -n
_
使用頻度の高いLion MBPでは、すべて同じ32エントリ(_... | wc -l
_)が返されます。
_-P -n
_は、lsof
が名前解決を行わないようにし、ブロックしません。これらのいずれかがないと、非常に遅くなる可能性があります。
UDPの場合:Sudo lsof -iUDP -P -n | egrep -v '(127|::1)'
。 _-n
_と_-P
_がないと、時間がかかります。
注意:これにはファイアウォール設定は含まれません。