Frage

Wie kann man unter Windows herausfinden, welcher Prozess einen Port abhört?

War es hilfreich?

Lösung

Power Shell

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

cmd

 C:\> netstat -a -b

(Hinzufügen -N um zu verhindern, dass es versucht, Hostnamen aufzulösen, was es viel schneller macht.)

Beachten Sie Danes Empfehlung für TCPView.Es sieht sehr nützlich aus!

-A Zeigt alle Verbindungen und Überwachungsports an.

-B Zeigt die ausführbare Datei an, die beim Erstellen jeder Verbindung oder jedes Überwachungsports beteiligt ist.In einigen Fällen hosten bekannte ausführbare Dateien mehrere unabhängige Komponenten, und in diesen Fällen wird die Reihenfolge der Komponenten angezeigt, die beim Erstellen der Verbindung oder des Überwachungsports beteiligt sind.In diesem Fall steht der Name der ausführbaren Datei unten in [], oben steht die aufgerufene Komponente und so weiter, bis TCP/IP erreicht wurde.Beachten Sie, dass diese Option zeitaufwändig sein kann und fehlschlägt, wenn Sie nicht über ausreichende Berechtigungen verfügen.

-N Zeigt Adressen und Portnummern in numerischer Form an.

Zeigt die besitzende Prozess-ID an, die jeder Verbindung zugeordnet ist.

Andere Tipps

Es gibt eine native GUI für Windows:

  • Start>>Alle Programme>>Zubehör>>Systemprogramme>>Ressourcenmonitor

oder Laufen resmon.exe, oder von Taskmanager Registerkarte „Leistung“.

enter image description here

Verwenden TCPView wenn Sie dafür eine GUI wünschen.Es handelt sich um die alte Sysinternals-App, die Microsoft aufgekauft hat.

netstat -aon | find /i "listening"

Der in den meisten Antworten erwähnte Schalter -b erfordert, dass Sie über Administratorrechte auf dem Computer verfügen.Sie benötigen nicht wirklich erhöhte Rechte, um den Prozessnamen zu erhalten!

Finden Sie die PID des Prozesses, der in der Portnummer ausgeführt wird (z. B. 8080).

netstat -ano | findStr "8080"

Finden Sie den Prozessnamen anhand der PID

tasklist /fi "pid eq 2216"

find process by TCP/IP port

Weitere Informationen erhalten Sie, wenn Sie den folgenden Befehl ausführen:

netstat -aon |find /i "listening" |find "port"

Mit dem Befehl „Suchen“ können Sie die Ergebnisse filtern.find /i „listening“ zeigt nur Ports an, die „Listening“ sind.Beachten Sie, dass Sie /i benötigen, um die Groß-/Kleinschreibung zu ignorieren, andernfalls würden Sie find „LISTENING“ eingeben.|find „port“ beschränkt die Ergebnisse auf diejenigen, die die spezifische Portnummer enthalten.Beachten Sie, dass dabei auch Ergebnisse gefiltert werden, bei denen die Portnummer an einer beliebigen Stelle in der Antwortzeichenfolge enthalten ist.

  1. Öffnen Sie ein Eingabeaufforderungsfenster (als Administrator). Geben Sie unter „Start\Suchfeld“ „cmd“ ein, klicken Sie dann mit der rechten Maustaste auf „cmd.exe“ und wählen Sie „Als Administrator ausführen“.

  2. Geben Sie den folgenden Text ein und drücken Sie dann die Eingabetaste.

    netstat -abno

    -A Zeigt alle Verbindungen und Überwachungsports an.

    -B Zeigt die ausführbare Datei an, die an der Erstellung der einzelnen Verbindungen beteiligt ist, oder Listening-Port.In einigen Fällen werden bekannte ausführbare Dateien gehostet mehrere unabhängige Komponenten und in diesen Fällen die Abfolge der Komponenten, die an der Erstellung der Verbindung beteiligt sind oder der Überwachungsport wird angezeigt.In diesem Fall wird die ausführbare Datei name steht in [] unten, oben ist die Komponente, die er aufgerufen hat, und so weiter, bis TCP/IP erreicht war.Beachten Sie, dass diese Option kann zeitaufwändig sein und wird fehlschlagen, es sei denn, Sie haben genügend Erlaubnisse.

    -N Zeigt Adressen und Portnummern in numerischer Form an.

    Zeigt die besitzende Prozess-ID an, die jeder Verbindung zugeordnet ist.

  3. Suchen Sie unter „Lokale Adresse“ den Port, den Sie abhören.

  4. Schauen Sie sich den Prozessnamen direkt darunter an.

NOTIZ:Den Prozess finden Sie im Task-Manager

  1. Beachten Sie die PID (Prozesskennung) neben dem Port, den Sie betrachten.

  2. Öffnen Sie den Windows Task-Manager.

  3. Wählen Sie die Registerkarte Prozesse.

  4. Suchen Sie nach der PID, die Sie notiert haben, als Sie den Netstat in Schritt 1 erstellt haben.

    • Wenn Sie keine PID-Spalte sehen, klicken Sie auf „Spalten anzeigen/auswählen“.Wählen Sie PID.

    • Stellen Sie sicher, dass „Prozesse aller Benutzer anzeigen“ ausgewählt ist.

Holen Sie sich PID und Bildnamen

Verwenden Sie nur einen Befehl:

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

Wo 9000 sollte durch Ihre Portnummer ersetzt werden.

Der Ausgabe wird etwa Folgendes enthalten:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

Erläuterung:

  • Es durchläuft jede Zeile der Ausgabe des folgenden Befehls:

    netstat -aon | findstr 9000
    
  • Aus jeder Zeile wird die PID (%a - der Name ist hier nicht wichtig) extrahiert wird (PID ist die 5Th Element in dieser Zeile) und an den folgenden Befehl übergeben

    tasklist /FI "PID eq 5312"
    

Wenn Sie wollen überspringen Die Header und die Rückkehr der Eingabeaufforderung, Sie können Folgendes verwenden:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

Ausgabe:

java.exe                      5312 Services                   0    130,768 K

Zuerst finden wir die Prozess-ID dieser bestimmten Aufgabe, die wir entfernen müssen, um den Port frei zu bekommen

Typ
netstat -n -a -o

Nach dem Ausführen dieses Befehls in der Windows-Befehlszeile (cmd) Wählen Sie die PID aus, die meiner Meinung nach in der letzten Spalte 3312 ist

Geben Sie nun ein

taskkill /F /PID 3312

Sie können jetzt eine Gegenprüfung durchführen, indem Sie den Befehl netstat eingeben.

NOTIZ:Manchmal können Sie diesen Befehl unter Windows nicht direkt auf CMD ausführen, sodass Sie zuerst diese Schritte ausführen müssen Von Start-> Eingabeaufforderung (klicken Sie mit der rechten Maustaste auf die Eingabeaufforderung, und führen Sie sie als Administrator aus)

Es ist sehr einfach, die Portnummer aus der PID in Windows abzurufen.

Im Folgenden sind die Schritte aufgeführt:

1) Gehen Sie zu Ausführen -> geben Sie cmd ein -> drücken Sie die Eingabetaste.

2) Schreiben Sie den folgenden Befehl ...

netstat -aon | findstr [port number]

(Notiz:Fügen Sie keine eckigen Klammern ein.)

3) Drücken Sie die Eingabetaste...

4) Dann gibt Ihnen cmd die Details des Dienstes, der auf diesem Port läuft, zusammen mit der PID.

5) Öffnen Sie den Task-Manager, klicken Sie auf die Registerkarte „Dienst“ und gleichen Sie die PID mit der des Cmd ab. Fertig.

So erhalten Sie eine Liste aller besitzenden Prozess-IDs, die jeder Verbindung zugeordnet sind:

netstat -ao |find /i "listening"

Wenn Sie einen Prozess beenden möchten, haben Sie die ID und verwenden Sie diesen Befehl, damit dieser Port frei wird

Taskkill /F /IM pidof a process

Öffnen Sie einfach eine Befehlsshell und geben Sie Folgendes ein:(sagen wir, Ihr Port ist 123456)

netstat -a -n -o | find "123456"

Sie werden alles sehen, was Sie brauchen

Die Überschriften sind:

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

das ist wie erwähnt Hier

Wenn Sie dazu ein GUI-Tool verwenden möchten, finden Sie hier: SysInternals TCPView.

Führen Sie PowerShell 5 unter Windows 10 oder Windows Server 2016 aus Get-NetTCPConnection Cmdlet.Ich vermute, dass es auch auf älteren Windows-Versionen funktionieren sollte.

Die Standardausgabe von Get-NetTCPConnection enthält aus irgendeinem Grund keine Prozess-ID und ist etwas verwirrend.Sie können es jedoch jederzeit erhalten, indem Sie die Ausgabe formatieren.Die Immobilie, die Sie suchen, ist OwningProcess.

  • Wenn Sie die ID des Prozesses herausfinden möchten, der Port 443 überwacht, führen Sie diesen Befehl aus:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • Formatieren Sie die Ausgabe in einer Tabelle mit den gesuchten Eigenschaften:

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • Wenn Sie den Namen des Prozesses herausfinden möchten, führen Sie diesen Befehl aus:

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    

Um herauszufinden, welcher spezifische Prozess (PID) welchen Port verwendet:

netstat -anon | findstr 1234

Wobei 1234 die PID Ihres Prozesses ist.[Gehen Sie zum Task-Manager -> Registerkarte „Dienste/Prozesse“, um die PID Ihrer Anwendung herauszufinden.]

netstat -ao Und netstat -ab Sagen Sie Ihnen die Anwendung, aber wenn Sie kein Administrator sind, erhalten Sie die Meldung „Der angeforderte Vorgang erfordert eine Erhöhung“.

Es ist nicht ideal, aber wenn Sie den Prozess-Explorer von sysinternals verwenden, können Sie zu den Eigenschaften bestimmter Prozesse gehen und auf der Registerkarte „TCP“ nachsehen, ob sie den Port verwenden, an dem Sie interessiert sind.Ein bisschen wie eine Nadel-und-Heuhaufen-Sache, aber vielleicht hilft es jemandem ...

Geben Sie den Befehl ein: netstat -aon | findstr :DESIRED_PORT_NUMBER

Wenn ich zum Beispiel Port 80 finden möchte: netstat -aon | findstr :80

Diese Antwort wurde ursprünglich in veröffentlicht dieser Thread.

Ich empfehle CurrPorts von NirSoft.

CurrPorts kann die angezeigten Ergebnisse filtern. TCPView verfügt nicht über diese Funktion.

Notiz:Sie können mit der rechten Maustaste auf die Socket-Verbindung eines Prozesses klicken und „Ausgewählte TCP-Verbindungen schließen“ auswählen (Sie können dies auch in TCPView tun).Dadurch werden häufig Verbindungsprobleme mit Outlook und Lync behoben, nachdem ich das VPN gewechselt habe.Mit CurrPorts können Sie Verbindungen auch über die Befehlszeile mit dem Parameter „/close“ schließen.

Netstat

  • -a zeigt alle Verbindungs- und Überwachungsports an
  • -b zeigt ausführbare Dateien an
  • -n Stoppt die Auflösung von Hostnamen (numerische Form)
  • -o besitzender Prozess

    netstat -bano | findstr "7002"

    netstat -ano > ano.txt

Currports Tool hilft beim Suchen und Filtern

Befolgen Sie diese Tools :- Von cmd :- C:\> netstat -anob mit Administrator Privileg.

http://technet.microsoft.com/en-us/sysinternals/bb896653 - Process Explorer

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Prozess-Dump

http://technet.microsoft.com/en-us/sysinternals/bb896644 - Portmonitor

Alles von sysinternals.com

Wenn Sie nur wissen möchten, wie der Prozess läuft und welche Threads unter jedem Prozess laufen, empfehle ich Ihnen, sich darüber zu informieren wmic.Wunderbares Cmd-Line-Tool, das Ihnen viel mehr bietet, als Sie wissen können.

Beispiel:-

c:\> wmic process list brief /every:5

Der obige Befehl zeigt alle 5 Sekunden kurz die gesamte Prozessliste an.Um mehr zu erfahren, können Sie einfach mitmachen /? Beherrschung von Windows, z. B.

c:\>wmic /?
c:\>wmic process /?
c:\>wmic prcess list /?

und so weiter und so fort.:) :)

netstat -a -o Hier wird die PID des Prozesses angezeigt, der auf einem bestimmten Port ausgeführt wird.

Merken Sie sich die Prozess-ID und gehen Sie zur Registerkarte „Task-Manager und Dienste“ oder „Details“ und beenden Sie den Prozess, der dieselbe PID hat.

Auf diese Weise können Sie einen Prozess beenden, der auf einem bestimmten Port in Windows ausgeführt wird.

Für diejenigen, die Powershell verwenden, versuchen Sie es Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

Powershell verwenden...
...das wäre dein Freund (ersetze 8080 durch deine Portnummer):

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

Beispielausgabe

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

In diesem Beispiel überwacht tnslsnr.exe (OracleXE-Datenbank) Port 8080.

Kurze Erklärung
Select-String wird verwendet, um die lange Ausgabe von zu filtern netstat für die entsprechenden Zeilen.
-Pattern testet jede Zeile anhand eines regulären Ausdrucks.
-Context 0,1 gibt für jede Musterübereinstimmung 0 führende Zeilen und 1 nachfolgende Zeile aus.

Programmatisch benötigen Sie Dinge von iphlpapi.h, Zum Beispiel GetTcpTable2().Strukturen wie MIB_TCP6ROW2 enthalten die Eigentümer-PID.

Eine Single-Line-Lösung, die mir hilft, ist diese. Ersetzen Sie einfach 3000 durch Ihren Port

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id

  1. Öffne das command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. Typ

    netstat -aon | findstr '[port_number]'

Ersetzen Sie [port_number] durch die tatsächliche Portnummer, die Sie überprüfen möchten, und drücken Sie die Eingabetaste.

  1. Wenn der Port von einer Anwendung verwendet wird, werden die Details dieser Anwendung angezeigt.Die Nummer, die in der letzten Spalte der Liste angezeigt wird, ist die PID (Prozess-ID) dieser Anwendung.Notieren Sie sich dies.
  2. Typ

    tasklist | findstr '[PID]'

Ersetzen Sie die [PID] durch die Zahl aus dem obigen Schritt und drücken Sie die Eingabetaste.

  1. Ihnen wird der Anwendungsname angezeigt, der Ihre Portnummer verwendet.

Wenn Sie unter Windows Dinge finden möchten, die Port 1234 abhören oder mit ihm verbunden sind, führen Sie an der cmd-Eingabeaufforderung Folgendes aus:

netstat -na | find "1234"

Verwenden Sie das folgende Batch-Skript, das einen Prozessnamen als Argument verwendet und eine Netstat-Ausgabe für den Prozess liefert.

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top