特定のPIDがリッスンしているポートを知る方法は?


13

OS Xでいくつかのポートをリッスンしている特定のプロセスのPIDがあり、このプロセスがリッスンしているポートを知る必要があります。どうすればできますか?

lsofどのプロセスがポートをリッスンしているかを知るために使用できることは知っていますが、逆の操作を実行する必要があります。

ありがとうございました。

UPD

OS XはBSDユーティリティを使用するため、netstatLinuxではなくBSDを使用していnetstatます。Linuxにnetstat-pPIDを表示するオプションがあり、BSD ポートを指定するために使用、PIDを表示するオプションはありません。netstat-p


プロセスがリッスンしているポートを見つけようとしていると言うつもりですか?netstatあなたのためにこれを行うことができます。あなたはできるgrepPIDであなたは、出力フィルタ処理する場合netstat
Centimane

また、lsof使用法は一方向ではありません。のようなことができますlsof|grep ${PID}。これはすべてを大まかにダンプし、grepPIDを含む行を選択します。オフのチャンスでは、誤って他の値と一致するPID番号による無関係の行を、リストかもしれないが、チャンスはnoneにスリムである
MelBurslan

@デイブ、はい、あなたは私に従ってください。Alackは、私が見ることができるように、BSDバージョンのnetstatPIDを表示できません。
shau-コテ

@MelBurslanそれはきちんとした解決策のようには見えません。さらに、高速ではありません。MBPには時間がかかります。
shau-コテ

回答:


13

深く読んで自分で解決策を見つけましたman lsof。(はい、RT * Mはまだ役立ちます。)@Gillesを目指してくれてありがとう。

解決策は次のとおりです lsof -aPi -p 555(555はPIDです)。

説明:

  1. -p PID番号を指定します。
  2. -i ネットワークデバイスのみを表示します。
  3. -a 上記の2つの条件のAND(そうでない場合はORされます);
  4. -P ポート番号を表示します(デフォルトではポート名の代わりに)。

さらに、一つは使用することができますlsof -aPi4 -p 555またはlsof -aPi6 -p 55IPv4またはIP6のためだけに応じて対処しています。

出力が別のプログラムによって解析される場合、-Fnオプションが役立つ場合があります。このオプションlsofを使用すると、適切な形式の出力ではなく「他のプログラムの出力」が生成されます。lsof -aPi4 -Fn -p 555このようなものを出力します:

p554
nlocalhost:4321

PS すべてはOS X El Capitanでテストしましたが、見てわかるように、Linuxでも動作するはずです。


6

lsofネットワークポートなど、プロセスによって開かれたファイルに関する情報を提供します。OSXを含むほとんどすべてのUNIXシステムで利用可能です。

Unixのためのロゼッタストーンは、 OSX上で、「ファイルまたはポートに一致するプロセス」のための他のツールが表示されません。

TCPポートでリッスンしているプロセスを一覧表示するには、次を使用できます。

lsof -iTCP -sTCP:LISTEN

lsof -iUDPUDPソケットが開いているプロセスをリストします。lsof -iすべての開いているネットワークソケット(TCPクライアント、TCPサーバー、およびその他のIPプロトコル)を一覧表示します。


0

どのポートがリッスンしているかを知りたい場合は、netstatの-pオプションを使用できます。スーパーユーザーになる必要があります。

$ sudo netstat -nlp | grep 80
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  125004/nginx

それについてもっと知りたい場合は、このリンクを試してください


それはGNUについてですnetstat、私はOS Xを持っているので、BSDを使用していますnetstat-pTCP / IPポートを指定するために使用し、PIDを表示するオプションはありません。
shau-コテ

0

FreeBSDでは、sockstatこの情報に使用できます。sockstatMacを持っていないので、OS Xが持っているかどうかはわかりません。

たとえば、すべてのTCPv4接続を表示するには:

sockstat -4


Alack、sockstat私のMacにはコマンドがありません。:(
shau-kote

0

netstatをgrep、awk、およびsedと連結して、LinuxおよびCygwin上の対応するpidを持つポートを表示できます。

$ netstat -ano | grep LISTENING | grep -v ‘\[::\]’ | sort -n | uniq -c | awk ‘ {print $3 “\t” $6}’ | sed ‘s/.*://’

詳細

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