1つの代替方法は、lsof
ユーティリティの使用です。具体的には、lsof -i 4tcp
は、何らかの種類のTCP IPv4ネットワークソケットが開いている状態ですべてのプロセスを一覧表示します。lsof
のマンページには、ユーティリティの使用方法と解釈方法の詳細情報が記載されています。出力。
特定のポートに関心がある場合は、次の例を使用できます。
lsof -i 4tcp:8080 -sTCP:LISTEN
プロセスIDのみを取得したい場合は、次のコマンドを実行できます。
lsof -i 4tcp:8080 -sTCP:LISTEN -Fp
TCPまたはUDP。-n
オプションは、IPアドレスをドメイン名に解決しようとする試みを無効にし、-P
特定のポートの名前を理解しようとする試みを無効にします。また、root
として実行すると、通常のユーザーとして実行するよりも多くのプロセスが表示されます。
Sudo lsof -iTCP:53 -iUDP:53 -n -P
次のコード例は、ローカルOSXマシンで実行中のすべてのTCPサーバーを示しています。
netstat -a -Ptcp | egrep 'tcp4.*LISTEN'
tcp4 0 0 127.0.0.1.2022 *.* LISTEN 0 0
tcp4 0 0 *.3141 *.* LISTEN 0 0
LISTEN
は、接続を待機しているソケットのみを表示します。つまり、サーバーです。
最初の行は、localhost
、別名127.0.0.1
、ポート2022
にバインドされたサーバーを示しています。ローカルの要求には応答しますが、インターネットベースの要求には応答しません。
2行目は、すべてのアドレスにバインドされたサーバー、つまり*
、ポート3141
です。それはwillインターネットの質問に答えます。
クライアントが使用するポートを一覧表示するにはandサーバーを使用するには、次のコマンドを使用します。
netstat -an -Ptcp | grep tcp4