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

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.


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.


-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.


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

1

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

  netstat -an | grep ':8080'

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


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'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.