netstatを使用して、ポートでリッスンしているプロセスを表示する方法


27

私はOS X Mountain Lionラップトップを使用しており、Vagrantボックスを2つ持っています。ポート8080でリッスンしているプロセスを把握しようとしています。私のバリエーションは100行のように生成されますが、特定のポート番号では生成されません。私は次のようなものを仮定しています:

netstat -XXX | grep 8080

これは家庭環境ですか、それとも職業環境ですか?
ルーカスカウフマン

まあ、サーバー環境をローカルで再作成します。別のサイトに移動したい場合は問題ありません。netstatの異なるバージョンは、異なる引数をサポートします。
ティンポン

さてさて、ここですべてが順調に思えるので、続けて素敵な一日を過ごしてください。
ルーカスカウフマン

回答:


52

残念ながら、OSXではnetstat、特定のポートに接続されているプロセスIDを表示しないBSDに固執しています。代わりに行う必要があるのはuse lsofです。使用する必要がある構文は次のとおりです。

lsof -i :8080

これにより情報の塊が出力されますが、ほとんどの情報は気にしませんが、フィールドには適切なラベルが付いています。たとえば、この出力例を確認してください。

lsof -i :53237
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest   29u  IPv4 0x2c3f7f95244855c3      0t0  TCP localhost:53237 (LISTEN)

これにより、ポート53237がプロセスID 927で使用されていることがわかります。COMMANDフィールドを読み取るとき、この出力が切り捨てられることに注意してください。実際には、バイナリのフルネームはGoogleTalkPluginです。


thx、これは私をかなり近づけます、かなり一般的なものになりますVBoxHeadl-どのVirtualBoxインスタンス(現在2つある)を確認する方法はありますか、私はあまりにも多くを求めていますか(おそらく後者)。THX
timpone

@timpone:VirtualBoxについて十分な知識がないので、その道をたどります。プロセスのコマンドラインをチェックして、そこにリストされているかどうかを確認するかlsof -p PID、開いているファイルのリストを見つけて使用するか、参照します。
スコットパック

クール、助けのためのthx
ティンポネ

8

これは、リスニングポートのPIDを探すときに使用したいものです。Linuxで使用する場合:netstat -tunlp

  • nネットワーク
  • lリスニングポート
  • pプロセス
  • t tcp
  • うう

追加情報はmanページにあります。


-pプログラムへの引数をリストしません。これはどうやって見るの?
jameshfisher

4
OPはOSXについて尋ねました。-pは、netstatのOSXバージョンのオプションではありません。
テッドビガム

-pOSXの場合はportです。OSXとLinuxで異なる議論をするという開発者の決定が嫌いです...
ダニエルW.

5

私はnetstatこの機能を提供するためにOS X で変更を行っていました-vが、ソケットに関連付けられたpid を提供するという事実につまずきました。


-v冗長レベルを増加させ、それが文書化されています。developer.apple.com/library/mac/documentation/Darwin/Reference/…–
Leathe

1
申し訳ありませんが、PIDを印刷するという事実は文書化されておらず、オプションが存在するということではありません。
ショーンハミルトン

4

私にとって、次の2行は、リスニングポートが開いているアプリとトンネルであるlsofが完全にクロスプラットフォームであることを示すのに最適です。

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN

1

特定のポートを見つけるには、以下のnetstatコマンドを使用します

  netstat -an | grep ':8080'

3
OPはプロセスの取得について尋ねました。これはプロセスIDを表示しません。
テッド・ビガム

1

man netstatから

-p、--program各ソケットが属するプログラムのPIDと名前を表示します。

私は通常これを行うだけです:netstat -antup | grep 8080


うーん...これは私が望むもののように聞こえますが、これはOS Xで-p-p protocol Show statistics about protocol, which is either a well-known name
timponeの

@timpone:-pPIDの表示はGNU netstatコマンドですが、OSXはBSD netstatを使用します。
スコットパック

-pプログラムへの引数をリストしません。これはどうやって見るの?
jameshfisher

1
OPはOSXについて尋ねました。-pは、netstatのOSXバージョンのオプションではありません。
テッドビガム

-pOSXの場合はportです。OSXとLinuxで異なる議論をするという開発者の決定が嫌いです...
ダニエルW.

0

以下のコマンドは接続を示しています。

netstat -antop | grep :8080

完全なフローをリアルタイムで表示するには、次を使用できますwatch

watch -d -t -n 1 'lsof -n -i :8080'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.