OS Xの特定のポートでリッスンしている特定のプロセスのPIDがあり、プロセスがリッスンしているポートを知る必要があります。どうすればいいですか?
私はこれを使用してlsof
どのプロセスが特定のポートでリッスンしているかを知ることができますが、その逆も実行する必要があります。
ありがとうございます。
UPD
netstat
OS XはBSDユーティリティを使用しているため、Linuxの代わりにBSDを使用してくださいnetstat
。 LinuxにはPIDを表示するオプションがnetstat
あります。-p
BSDは特定のポートをnetstat
使用し、-p
PIDを表示するオプションはありません。
答え1
私は追加の読書を通して自分で解決策を見つけましたman lsof
。 (はい、RT * Mはまだ助けになります。)目指してくれた@Gillesに感謝します。
解決策は次のとおりです。 lsof -aPi -p 555
(555はPIDです。)
説明する:
-p
PID番号を指定してください。-i
ネットワークデバイスのみを表示します。-a
上記の2つの条件をANDにします(それ以外の場合はOR演算が実行されます)。-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 -iUDP
UDPソケットを開くプロセスを一覧表示します。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/.*://’