私はOS X Mountain Lionラップトップを使っていて、それにVagrantボックスをいくつか持っています。私はどのプロセスがポート8080をリッスンしているのかを把握しようとしています。私は次のように想定しています:
netstat -XXX | grep 8080
残念ながら、OSXではBSDのnetstat
にこだわっていて、与えられたポートに添付されているプロセスIDは表示されません。代わりに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です。
これは私がリスニングポートのPIDを探すときに使いたいものです。 Linuxの場合はnetstat -tunlp
追加情報はmanページにあります。
私はこの機能を提供するためにOS Xでnetstat
を修正する過程にあり、-v
がソケットに関連したpidを与えるという事実につまずいた。
私にとっては、次の2行がどのアプリがリスニングポートを開いてトンネルを開いているかを示すのに最適です。
netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN
特定のポートを調べるには、below netstatコマンドを使用してください。
netstat -an | grep ':8080'
男からnetstat
-p、--program各ソケットが属するプログラムのPIDと名前を表示します。
私はたいていこれをやるだけです。 grep 8080
下記のコマンドは接続を表示します。
netstat -antop | grep :8080
完全なフローをリアルタイムで表示するには、watch
を使用できます。
watch -d -t -n 1 'lsof -n -i :8080'