回答:
netstat -ap tcp | grep -i "listen"
Achive Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.25035 *.* LISTEN
sudo lsof -PiTCP -sTCP:LISTEN
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
GitHub 850 grgarside 6u IPv4 0x23c345381d089301 0t0 TCP localhost:25035 (LISTEN)
sudo lsof ...
。sudoがない場合、lsofは自分が所有するプロセスのみを表示できるため、システムプロセスによって開かれたポートは表示されません。また、lsofにLISTEN状態のポートのみを表示するように指示することにより、grepコマンドをスキップできますsudo lsof -PiTCP -sTCP:LISTEN
。
grep -i "listen"
2つの例の中の効果に注意してください。
netstat
では、オプションで各ポートを開いたプロセスのpidをリストできます。BSD netstat
でもその動作を得る方法はありますか?
-v
フラグがそれをオンにすることが判明しました。pidは最後から2番目の列にあります。
多分あなたはlsofを使用することができます:
lsof -Pn -i4
-i4は、ipv4アドレスとポートのみを表示することを意味します-Pおよび-n高速出力
このような出力
➜ lsof -Pn -i4 | grep LISTEN
QQPlatfor 22767 xxxx 15u IPv4 0x36c2bfa04e49385d 0t0 TCP *:49969 (LISTEN)
GoAgentX 33377 xxxx 4u IPv4 0x36c2bfa06e68b12d 0t0 TCP *:56154 (LISTEN)
GoAgentX 33377 xxxx 20u IPv4 0x36c2bfa04e492f8d 0t0 TCP 127.0.0.1:56155 (LISTEN)
lsof
開いているファイルをリストします。ネットワークソケットはファイルとしてカウントされるため、開いている各ネットワークソケット(リッスンまたはアクティブに使用中)はにリストされlsof
ます。
lsof -Pn -i6
IPV6
-i4
スイッチで、IPv4アドレスのみを確認します。
最も簡単な方法は以下を使用することnetstat
です:
$ netstat -ap tcp
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 10.0.2.23.58792 17.172.233.109.5223 ESTABLISHED
tcp4 87 0 my_iMac__at_home.55481 stackoverflow.co.http ESTABLISHED
tcp4 116 0 my_iMac__at_home.55478 stackoverflow.co.http ESTABLISHED
tcp4 58 0 my_iMac__at_home.63452 stackoverflow.co.http ESTABLISHED
tcp4 87 0 my_iMac__at_home.63429 stackoverflow.co.http ESTABLISHED
tcp4 0 0 localhost.63173 localhost.773 ESTABLISHED
tcp4 0 0 localhost.773 localhost.63173 ESTABLISHED
tcp4 0 0 localhost.63173 *.* LISTEN
tcp4 0 0 localhost.63172 *.* LISTEN
tcp4 0 0 localhost.ipp *.* LISTEN
tcp6 0 0 localhost.ipp *.* LISTEN
…追加のフィルタリングなしで、正しいヘッダーを取得し、両方のサーバーがリッスンし、接続がすでに両方向で確立されていることを確認します。この例では、最初の行は、私のMacからに向けた接続を示してい
17.172.233.109
ます。
whois 17.172.233.109
アップルにあると教えてくれました。
まず、私はBSDの専門家ではありませんが、OPのように、* nixボックス、またはそれに近いもので次を実行するのと大体同じことを望みました。
netstat -tulpn
MacOSでlsof *およびnetstat *を提供する他の質問/回答を読みましたが、出力がさらにコンパクトなものが必要でした。だから、これは私が簡単にまとめたものです:
netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print cred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname; }' | column -t -s "|"
ちょっとやり過ぎですので、適切な測定のために出力に色を追加しました。私はこの巨人を覚えることができないか、タイプしたくないので。それをbash関数に入れて、必要なときに呼び出すだけです。bash関数は次のとおりです。
macnst (){
netstat -Watnlv | grep LISTEN | awk '{"ps -o comm= -p " $9 | getline procname;colred="\033[01;31m";colclr="\033[0m"; print colred "proto: " colclr $1 colred " | addr.port: " colclr $4 colred " | pid: " colclr $9 colred " | name: " colclr procname; }' | column -t -s "|"
}
〜/ .bash_profileまたは〜/ .zshrcをソースとするファイルにこれらの便利な関数の小さなコレクションがあります。これはコレクションに追加されています。この見栄えを良く/細かくする他の機会を見るのは面白いでしょう。
サンプル出力:
> macns
proto: tcp4 addr.port: 127.0.0.1.9999 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.35729 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62087 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62070 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp46 addr.port: *.62085 pid: 70078 name: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/bin/java
proto: tcp4 addr.port: *.61993 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/MacOS/idea
proto: tcp46 addr.port: *.61992 pid: 70065 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.42329 pid: 70065 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.61983 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.63342 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.6942 pid: 70043 name: /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java
proto: tcp4 addr.port: 127.0.0.1.3075 pid: 67931 name: /Applications/electerm.app/Contents/Frameworks/electerm Helper.app/Contents/MacOS/electerm Helper
proto: tcp6 addr.port: *.58640 pid: 320 name: /usr/libexec/rapportd
proto: tcp4 addr.port: *.58640 pid: 320 name: /usr/libexec/rapportd
proto: tcp4 addr.port: 127.0.0.1.9770 pid: 71 name: /Applications/Pritunl.app/Contents/Resources/pritunl-service
lsof
ですが、感謝します。