特定のPIDがどのポートをリッスンしているかをどうやって知ることができますか?

特定のPIDがどのポートをリッスンしているかをどうやって知ることができますか?

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

私はこれを使用してlsofどのプロセスが特定のポートでリッスンしているかを知ることができますが、その逆も実行する必要があります。

ありがとうございます。

UPD

netstatOS XはBSDユーティリティを使用しているため、Linuxの代わりにBSDを使用してくださいnetstat。 LinuxにはPIDを表示するオプションがnetstatあります。-pBSDは特定のポートをnetstat使用し、-pPIDを表示するオプションはありません。

答え1

私は追加の読書を通して自分で解決策を見つけましたman lsof。 (はい、RT * Mはまだ助けになります。)目指してくれた@Gillesに感謝します。

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

説明する:

  1. -pPID番号を指定してください。
  2. -iネットワークデバイスのみを表示します。
  3. -a上記の2つの条件をANDにします(それ以外の場合はOR演算が実行されます)。
  4. -Pポート番号を表示します(デフォルトではポート名が表示されます)。

また、IPv4またはIP6アドレスを適切にlsof -aPi4 -p 555または1つだけ使用できます。lsof -aPi6 -p 55

他のプログラムから出力を解析する場合は、-Fnこのオプションが役に立ちます。このオプションを使用すると、lsof正しい形式の出力の代わりに「他のプログラムの出力」が生成されます。lsof -aPi4 -Fn -p 555次のような内容が出力されます。

p554
nlocalhost:4321

ポリスチレン 私はこれらすべてを私のOS X El Capitanでテストしましたが、私が理解したのはLinuxでも動作します。

答え2

lsofネットワークポートを含むプロセスで開かれたファイルに関する情報を提供します。ほとんどすべてのUNIXシステムで動作します。オペレーティングシステムを含む

これUnix用ロゼッタストーンOSXには、「ファイルまたはポートにプロセスを一致させる」ための他のツールはリストされていません。

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

lsof -iTCP -sTCP:LISTEN

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

答え3

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

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

詳しく知りたい場合は、これを試してください。協会

答え4

netstatをgrep、awk、およびsedに関連付けることで、LinuxおよびCygwinでポートとそのPIDを表示できます。

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

詳しくは

関連情報