Frage Wer hört auf einem bestimmten TCP-Port unter Mac OS X?


Unter Linux kann ich verwenden netstat -pntl | grep $PORT oder fuser -n tcp $PORT um herauszufinden, welcher Prozess (PID) am angegebenen TCP-Port abhört. Wie bekomme ich dieselben Informationen über Mac OS X?


930
2017-12-12 12:30


Ursprung


Antworten:


Verwenden Sie auf macOS High Sierra diesen Befehl:

lsof -nP -i4TCP:$PORT | grep LISTEN

Verwenden Sie für ältere Versionen eines der folgenden Formulare:

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

Ersatz $PORT mit der Portnummer oder einer durch Kommas getrennten Liste von Portnummern.

Vorbereiten sudo (gefolgt von einem Leerzeichen), wenn Sie Informationen zu Ports unter # 1024 benötigen.

Das -n Flag dient zum Anzeigen von IP-Adressen anstelle von Hostnamen. Dies führt dazu, dass der Befehl viel schneller ausgeführt wird, da DNS-Lookups zum Abrufen der Hostnamen langsam sein können (einige Sekunden oder eine Minute für viele Hosts).

Das -P Flag ist für die Anzeige von rohen Portnummern anstelle von aufgelösten Namen wie http, ftp oder mehr esoterische Dienstnamen wie dpserve, socalia.

Siehe die Kommentare für weitere Optionen.


1430
2017-12-12 12:39



Sie können auch verwenden:

sudo lsof -i -n -P | grep TCP

Dies funktioniert in Mavericks.


374
2018-01-22 22:13



Seit Yosemite (10.10), bis zur hohen Sierra (10.13)Jede Version von macOS unterstützt dies:

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

341
2018-05-04 12:11



Aktualisierung Januar 2016

Wirklich überrascht hat niemand vorgeschlagen:

lsof -i :PORT_NUMBER

um die grundlegenden Informationen zu erhalten. Zum Beispiel, Überprüfung auf Port 1337:

lsof -i :1337

Andere Variationen, abhängig von den Umständen:

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

Sie können einfach darauf aufbauen, um die PID selbst zu extrahieren. Beispielsweise:

lsof -t -i :1337

Das entspricht (im Ergebnis) auch diesem Befehl:

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

Schnelle Illustration:

enter image description here

Zur Vollständigkeit, weil häufig zusammen verwendet:

Um die PID zu töten:

kill -9 <PID>
# kill -9 60401

oder als ein Liner:

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

224
2018-01-07 15:45



Dies funktioniert in Mavericks (OSX 10.9.2).

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

79
2018-05-12 03:33



Unter OS X können Sie die Option -v für netstat verwenden, um die zugehörige PID anzugeben.

Art:

netstat -anv | grep [.]PORT

Die Ausgabe sieht dann so aus:

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

Die PID ist die Nummer vor der letzten Spalte, 3105 für diesen Fall


24
2017-11-03 08:06



Unter MacOS erhalten Sie hier eine einfache Möglichkeit, die Prozess-ID zu erhalten, die an einem bestimmten Port abgehört wird Netstat. In diesem Beispiel wird nach einem Prozess gesucht, der Inhalt an Port 80 bereitstellt:

Server finden auf Port 80 statt

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

Beispielausgabe

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

Die 2. von der letzten Spalte ist die PID. Oben ist es 715.

Optionen

-a - Zeigen Sie alle Ports an, einschließlich derer, die von Servern verwendet werden

-n - Zeige Nummern, suche keine Namen. Dies macht den Befehl a Menge schneller

-v - ausführliche Ausgabe, um die Prozess-IDs zu erhalten

-w - Suche nach Wörtern. Andernfalls gibt der Befehl Informationen für die Ports 8000 und 8001 zurück, nicht nur "80"

LISTEN - Informationen nur für Ports im LISTEN-Modus, d. h. Server, geben


19
2018-01-14 22:14



Auf Snow Leopard (OS X 10.6.8) liefert 'man lsof':

lsof -i 4 -a

(Die tatsächliche manuelle Eingabe ist 'lsof -i 4 -a -p 1234')

Die vorherigen Antworten funktionierten nicht auf Snow Leopard, aber ich habe versucht, 'netstat -nlp' zu verwenden, bis ich die Verwendung von 'lsof' in der Antwort von pts sah.


12
2017-08-25 19:14



Ich bin ein Linux-Typ. Unter Linux ist es extrem einfach mit netstat -ltpn oder irgendeine Kombination dieser Buchstaben. Aber in Mac OS X netstat -an | grep LISTEN ist das humanste. Andere sind sehr hässlich und bei der Fehlersuche sehr schwer zu merken.


10
2017-08-17 18:57



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

Hier wird angezeigt, wer was macht. Entferne -n ​​um Hostnamen zu sehen (etwas langsamer).


7
2018-05-03 09:35