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


50

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
$

3
lsofの出力はamanda10080の代わりに表示されますか?
ジョン林

3
@JonLin -nアドレスには影響するだけでポートには影響しないことに気づきませんでした。ポート番号を取得するには、私も使用する必要があり-Pます。ありがとう
マッテオ

3
@JonLin:しかし、あなたにはpost lsof -i -sTCP:LISTENがあり、それなしで-nは10080も明らかになりませんでした。だからあなたは-P
ハナンN.

回答:


75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

... | wc -lよく使用するLion MBPで、すべて同じ32エントリ()が返されます。

-P -n回避lsof名前解決を行うことから、それはブロックされません。これらのいずれかが欠落していると、非常に遅くなる可能性があります。

UDPの場合:sudo lsof -iUDP -P -n | egrep -v '(127|::1)'。とがなければ-n-P時間がかかります。

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


3
はい、問題はありません-Pでした。-nIPだけでなくポート番号にも適用されると誤って想定していました。
マッテオ

-1
  1. 最初に、必要なポート(5434など)を占有しているプロセスID(pid)を見つけます。

    ps aux | grep 5434
    
  2. そのプロセスを強制終了します。

    kill -9 <pid>
    

5
ps auxプロセスが使用しているポートは表示されません
マッテオ

Matteoに同意します。netstat -anpのようなことをしなかったと確信していますか?grep 5434(これは5434でリッスンしているもののリストを返し、最初または2番目の列はpidですか?)
Foon

6
したがって、実行文字列でポート番号を明示的に指定してプロセスが呼び出され、文字列のその部分がgrepによって一致する場合にのみ機能します。
テクラフ

1
kill -9プロセスを取り除くための最初のオプションとして使用することは、極端な選択です。また、これは実際に質問に答えるものではありません。これは物事を殺すことではなく、実行されているものを見つけることです。
リンデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.