Wie man mit netstat anzeigt, welcher Prozess einen Port überwacht

27

Ich bin auf einem OS X Mountain Lion-Laptop und habe ein paar Vagrant-Boxen darauf. Ich versuche herauszufinden, welcher Prozess auf Port 8080 lauscht. Meine Variationen produzieren wie hundert Zeilen, aber keine mit einer bestimmten Portnummer. Ich gehe von etwas aus wie:

netstat -XXX | grep 8080
timpone
quelle
Ist dies in einer häuslichen Umgebung oder professionellen Umgebung?
Lucas Kauffman
Nun, einen Server Enviro lokal neu erstellen. Wenn Sie zu einer anderen Site wechseln möchten, ist das in Ordnung. Verschiedene Versionen von netstat unterstützen unterschiedliche Argumente.
timpone
Okay, Sir, hier scheint alles in Ordnung zu sein. Machen Sie weiter und haben Sie einen schönen Tag.
Lucas Kauffman

Antworten:

52

Leider stecken Sie unter OSX mit der BSD fest, netstatdie Ihnen nicht die Prozess-ID anzeigt, die an einen bestimmten Port angehängt ist. Was Sie stattdessen tun müssen, ist zu verwenden lsof. Die zu verwendende Syntax lautet:

lsof -i :8080

Dadurch werden Informationsmengen ausgedruckt, von denen die meisten Ihnen egal sind, die Felder jedoch gut beschriftet sind. Schauen Sie sich zum Beispiel diese Beispielausgabe an.

lsof -i :53237
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
GoogleTal 927 guest   29u  IPv4 0x2c3f7f95244855c3      0t0  TCP localhost:53237 (LISTEN)

Dies sagt mir, dass Port 53237 von Prozess-ID 927 verwendet wird. Beachten Sie beim Lesen des COMMAND-Felds, dass diese Ausgabe abgeschnitten ist. In Wirklichkeit lautet der vollständige Name der Binärdatei GoogleTalkPlugin.

Scott Pack
quelle
thx, das bringt mich viel näher, es wird ziemlich allgemein VBoxHeadl- gibt es eine Möglichkeit zu sehen, welche VirtualBox-Instanz (haben Sie zwei im Moment) oder frage ich viel zu viel (wahrscheinlich die letztere). thx
timpone
@timpone: Ich weiß nicht genug über VirtualBox, um Ihnen auf diesem Weg zu helfen. Sie können die Prozessbefehlszeile überprüfen, um lsof -p PIDfestzustellen, ob sie dort aufgeführt ist, oder die Liste der geöffneten Dateien verwenden und durchsuchen, bis Sie sie finden.
Scott Pack
cool, danke für hilfe
timpone
8

Dies ist, was ich gerne verwende, wenn ich nach der PID eines Überwachungsports suche. Für Linux verwenden:netstat -tunlp

  • n Netzwerk
  • l lauschende Ports
  • p Prozess
  • t tcp
  • u udp

Weitere Informationen finden Sie in den Manpages.

CDSU
quelle
-plistet die Argumente zum Programm nicht auf. Wie sehe ich das?
Jameshfisher
4
OP fragte nach OSX. -p ist in der OSX-Version von netstat keine Option.
Ted Bigham
-punter OSX ist port. Ich hasse die Entscheidungen der Entwickler, unterschiedliche Argumente für OSX und Linux vorzulegen ...
Daniel W.
5

Ich war gerade dabei, netstatOS X zu modifizieren , um diese Funktion bereitzustellen, und bin auf die Tatsache gestoßen, dass -vSie die mit einem Socket verknüpfte PID erhalten.

Sean Hamilton
quelle
Das -verhöht die Ausführlichkeit und es wird dokumentiert. developer.apple.com/library/mac/documentation/Darwin/Reference/…
Leathe
1
Entschuldigung, ich meinte die Tatsache, dass es die PID druckt, ist nicht dokumentiert, nicht, dass die Option vorhanden ist.
Sean Hamilton
4

Für mich funktionieren die folgenden zwei Zeilen am besten, um zu zeigen, welche Apps Abhörports geöffnet haben, und Tunnel, lsof ist vollständig plattformübergreifend:

netstat -Watn | grep LISTEN
lsof -Pnl +M -i -cmd | grep LISTEN
Tomachi
quelle
1

Um den spezifischen Port herauszufinden, verwenden Sie den folgenden Befehl: netstat

  netstat -an | grep ':8080'

quelle
3
OP fragte nach dem Prozess. Hier wird die Prozess-ID nicht angezeigt.
Ted Bigham,
1

Von man netstat

-p, --program Zeigt die PID und den Namen des Programms an, zu dem jeder Socket gehört.

Ich mache normalerweise einfach folgendes: netstat -antup | grep 8080

Hermes Conrad
quelle
hmm ... das hört sich so an, wie ich es gerne hätte, aber das gibt mir unter OS X verschiedene Optionen für -p-p protocol Show statistics about protocol, which is either a well-known name
timpone
@timpone: Die -pAnzeige der PID ist ein GNU netstat-Befehl, während OSX BSD netstat verwendet.
Scott Pack
-plistet die Argumente zum Programm nicht auf. Wie sehe ich das?
Jameshfisher
1
OP fragte nach OSX. -p ist in der OSX-Version von netstat keine Option.
Ted Bigham
-punter OSX ist port. Ich hasse die Entscheidungen der Entwickler, unterschiedliche Argumente für OSX und Linux vorzulegen ...
Daniel W.
0

Der folgende Befehl zeigt die Verbindung:

netstat -antop | grep :8080

Um den gesamten Ablauf in Echtzeit anzuzeigen, können Sie Folgendes verwenden watch:

watch -d -t -n 1 'lsof -n -i :8080'
suhas
quelle