web-dev-qa-db-ja.com

lsofおよびリスニングポート

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
$
52
Matteo
_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_がないと、時間がかかります。

注意:これにはファイアウォール設定は含まれません。

82
Barry A.