質問

Linuxでは、使用できます netstat -pntl | grep $PORT または fuser -n tcp $PORT 指定された TCP ポートでリッスンしているプロセス (PID) を確認します。Mac OS X で同じ情報を取得するにはどうすればよいですか?

役に立ちましたか?

解決

Macos High Sierraでは、このコマンドを使用してください。

lsof -nP -i4TCP:$PORT | grep LISTEN

古いバージョンでは、次のフォームのいずれかを使用します。

lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

代わりの $PORT ポート番号またはポート番号のコンマ区切りリストを使用します。

プレイエンド sudo (スペースが続きます)#1024以下のポートに関する情報が必要な場合。

-n フラグは、ホスト名の代わりにIPアドレスを表示するためのものです。これにより、ホスト名を取得するDNSルックアップが遅くなる可能性があるため(多くのホストの場合は数秒または1分)、これによりコマンドの実行がはるかに速くなります。

-P フラグは、次のような解決済みの名前ではなく、生のポート番号を表示するためのものです http, ftp 以下のような難解なサービス名 dpserve, socalia.

その他のオプションについては、コメントをご覧ください。

他のヒント

スノーヒョウ以来(10.6)、 Mojaveまで(10.14), 、MacOSのすべてのバージョンがこれをサポートしています:

sudo lsof -iTCP -sTCP:LISTEN -n -P

個人的に私は自分のこの単純な機能になります ~/.bash_profile:

listening() {
    if [ $# -eq 0 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P
    elif [ $# -eq 1 ]; then
        sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
    else
        echo "Usage: listening [pattern]"
    fi
}

それで listening コマンドは、いくつかのポートで聞くプロセスのリストを提供し、 listening smth これをいくつかのパターンのためにグレップします。

これを持っていると、特定のプロセスについて尋ねるのは非常に簡単です。 listening dropbox, 、またはポート、例 listening 22.

lsof コマンドには、ポート、プロトコル、プロセスなどについて尋ねるためのいくつかの専門的なオプションがありますが、個人的には、これらの低レベルのオプションをすべて覚えておく必要がないため、上記の機能がはるかに便利であることがわかりました。 lsof 非常に強力なツールですが、残念ながら使用するのはそれほど快適ではありません。

使用することもできます。

sudo lsof -i -n -P | grep TCP

これはマーベリックスで動作します。

2016年1月の更新

誰も提案していないことを本当に驚かせた:

lsof -i :PORT_NUMBER

必要な基本情報を取得するには。たとえば、ポート1337の確認:

lsof -i :1337

状況に応じて、その他のバリエーション:

sudo lsof -i :1337
lsof -i tcp:1337

これを簡単に構築して、PID自体を抽出できます。例えば:

lsof -t -i :1337

これは、このコマンドと同等の(結果で)次のとおりです。

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

クイックイラスト:

enter image description here

完全に、頻繁に一緒に使用されるため:

PIDを殺すために:

kill -9 <PID>
# kill -9 60401

または1つのライナーとして:

kill -9 $(lsof -t -i :1337)

これはMavericks(OSX 10.9.2)で機能します。

sudo lsof -nP -iTCP:$PORT -sTCP:LISTEN

OS Xでは、NetStatの-Vオプションを使用して、関連するPIDを提供できます。

タイプ:

netstat -anv | grep [.]PORT

出力は次のようになります:

tcp46      0      0  *.8080                 *.*                    LISTEN      131072 131072   3105      0

PIDは、最後の列の前の数字、この場合は3105です

リッスン、確立、閉鎖港のために

sudo lsof -n -i -P | grep TCP

リッスンポートのみ

sudo lsof -n -i -P | grep LISTEN

特定のリッスンポートの場合、例:ポート80

sudo lsof -n -i -P | grep ':80 (LISTEN)'

または、コンパクトな概要[サービス/アプリが記述されていない]が必要な場合は、NetStatをご覧ください。ここの良い面は、 sudoは必要ありません

netstat -a -n | grep 'LISTEN '

使用されているアイテムの説明:

-n ホスト名を抑制します

-私 IPv4およびIPv6プロトコルの場合

-P ポート名を省略します

-A すべてのソケット用[NetStat Over

-n NetStat Over]名前を解決しないで、ネットワークアドレスを数字として表示します

でテストされています ハイシエラ 10.13.3および モハーベ 10.14.3

  • 最後の構文 netstat Linuxでも動作します

  • lsof Debianベースを試してみることができます: apt-getインストールlsof

macOS では、特定のポートでリッスンしているプロセス ID を取得する簡単な方法を次に示します。 ネット統計. 。この例では、ポート 80 でコンテンツを提供するプロセスを検索します。

ポート 80 で実行されているサーバーを検索

netstat -anv | egrep -w [.]80.*LISTEN

サンプル出力

tcp4  0 0  *.80       *.*    LISTEN      131072 131072    715      0

最後から 2 番目の列は PID です。上では、それは 715.

オプション

-a - サーバーで使用されているポートを含むすべてのポートを表示します

-n - 名前を検索せずに番号を表示します。これにより、コマンドは 多く もっと早く

-v - プロセス ID を取得するための詳細出力

-w - 検索ワード。それ以外の場合、コマンドは「80」だけでなく、ポート 8000 と 8001 の情報を返します。

LISTEN - LISTEN モードのポートのみに関する情報を提供します。つまり、サーバー

最新のMacOSバージョンでは、このコマンドを使用できます。

lsof -nP -i4TCP:$PORT | grep LISTEN

覚えておくのが難しいと思うなら、多分あなたは bash SOのような友好的な名前で機能してエクスポートします

vi ~/.bash_profile

次に、次の行をそのファイルに追加して保存します。

function listening_on() {
    lsof -nP -i4TCP:"$1" | grep LISTEN
}

これで入力できます listening_on 80 ターミナルで、どのプロセスがポートで聴いているかを確認します 80.

Snow Leopard(OS X 10.6.8)では、「Man Lsof」の収穫量を実行しています。

lsof -i 4 -a

(実際の手動入力は 'lsof -i 4 -a -p 1234')

以前の回答はSnow Leopardでは機能しませんでしたが、PTSによる回答で「LSOF」の使用が見られるまで「NetStat -NLP」を使用しようとしていました。

私はLinuxの男です。 Linuxでは、非常に簡単です netstat -ltpn またはそれらの文字の任意の組み合わせ。しかし、Mac OS Xでは netstat -an | grep LISTEN 最も人道的なものです。他の人は非常に醜く、トラブルシューティングを覚えておくのが非常に困難です。

lsof -n -i | awk '{ print $1,$9; }' | sort -u

これは誰が何をしているのかを表示します。 -nを削除して、ホスト名を表示します(少し遅い)。

これは私が必要としていたことをしました。

ps -eaf | grep `lsof -t -i:$PORT`

誰がどこで聞いているのかだけでなく、確立されたつながりを表示し、どの国に表示するかを見るために、小さなスクリプトを作成しました。 OSX Sieraで動作します

#!/bin/bash
printf "\nchecking established connections\n\n"
for i in $(sudo lsof -i -n -P | grep TCP | grep ESTABLISHED | grep -v IPv6 | 
grep -v 127.0.0.1 | cut -d ">" -f2 | cut -d " " -f1 | cut -d ":" -f1); do
    printf "$i : " & curl freegeoip.net/xml/$i -s -S | grep CountryName | 
cut -d ">" -f2 | cut -d"<" -f1
done

printf "\ndisplaying listening ports\n\n"

sudo lsof -i -n -P | grep TCP | grep LISTEN | cut -d " " -f 1,32-35

#EOF

Sample output
checking established connections

107.178.244.155 : United States
17.188.136.186 : United States
17.252.76.19 : United States
17.252.76.19 : United States
17.188.136.186 : United States
5.45.62.118 : Netherlands
40.101.42.66 : Ireland
151.101.1.69 : United States
173.194.69.188 : United States
104.25.170.11 : United States
5.45.62.49 : Netherlands
198.252.206.25 : United States
151.101.1.69 : United States
34.198.53.220 : United States
198.252.206.25 : United States
151.101.129.69 : United States
91.225.248.133 : Ireland
216.58.212.234 : United States

displaying listening ports

mysqld TCP *:3306 (LISTEN)
com.avast TCP 127.0.0.1:12080 (LISTEN)
com.avast TCP [::1]:12080 (LISTEN)
com.avast TCP 127.0.0.1:12110 (LISTEN)
com.avast TCP [::1]:12110 (LISTEN)
com.avast TCP 127.0.0.1:12143 (LISTEN)
com.avast TCP [::1]:12143 (LISTEN)
com.avast TCP 127.0.0.1:12995 (LISTEN)
com.avast [::1]:12995 (LISTEN)
com.avast 127.0.0.1:12993 (LISTEN)
com.avast [::1]:12993 (LISTEN)
Google TCP 127.0.0.1:34013 (LISTEN)

これは、北韓国に接続しているかどうかを確認するのに役立つ場合があります! ;-)

これは、Macos High Sierraの良い方法です:

netstat -an |grep -i listen

ユーザーのブレントセルフに触発された:

lsof -i 4 -a | grep LISTEN

MacOSの場合、2つのコマンドを使用して、マシンでリスニングされているプロセスに関する情報を表示し、リモートサーバーに接続するプロセスを示します。言い換えれば、ホストのリスニングポートと現在の(TCP)接続を確認するには、次の2つのコマンドを一緒に使用できます

1. netstat -p tcp -p udp 

2. lsof -n -i4TCP -i4UDP 

私は自分の入力を追加するだろうと思った、うまくいけばそれは誰かを助けることになる可能性がある。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top