Wie können Sie herausfinden, welcher Prozess einen Port unter Windows überwacht?
windows
networking
port
Schreibgeschützt
quelle
quelle
Antworten:
Neue Antwort, Powershell
Alte Antwort, cmd
(Fügen Sie -n hinzu , um zu verhindern, dass versucht wird, Hostnamen aufzulösen, wodurch es viel schneller wird.)
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 befindet sich der Name der ausführbaren Datei unten in [], oben die aufgerufene Komponente usw., 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.
-o Zeigt die jeder Verbindung zugeordnete Prozess-ID an.
quelle
1234
-, können Sietasklist /fi "pid eq 1234"
den Namen und andere Details des Prozesses herausfinden.Es gibt eine native GUI für Windows:
Oder Ausführen
resmon.exe
oder auf der Registerkarte Leistung des Task-Managers .quelle
Verwenden Sie TCPView, wenn Sie hierfür eine GUI benötigen . Es ist die alte Sysinternals- Anwendung, die Microsoft gekauft hat.
quelle
Für Windows:
quelle
netstat -aon | find /i "abhören"
für Deutsch.FIND: Parameter format not correct
Für den in den meisten Antworten genannten Schalter -b müssen Sie über Administratorrechte auf dem Computer verfügen. Sie benötigen nicht wirklich erhöhte Rechte, um den Prozessnamen zu erhalten!
Suchen Sie die PID des Prozesses, der in der Portnummer ausgeführt wird (z. B. 8080).
Suchen Sie den Prozessnamen anhand von pid
quelle
Weitere Informationen erhalten Sie, wenn Sie den folgenden Befehl ausführen:
Mit dem Befehl 'Suchen' können Sie die Ergebnisse filtern.
find /i "listening"
zeigt nur Ports an, die "Abhören". Beachten Sie, dass Sie den/i
Fall ignorieren müssen, andernfalls würden Sie find "LISTENING" eingeben.| find "port"
beschränkt die Ergebnisse nur auf diejenigen, die die spezifische Portnummer enthalten. Beachten Sie, dass hierzu auch Ergebnisse gefiltert werden, deren Portnummer an einer beliebigen Stelle in der Antwortzeichenfolge steht.quelle
FIND: Parameter format not correct
. Sie müssen nach den Suchkriterien ein Leerzeichen hinzufügen. Dies wird Sie mit verlassennetstat -aon | find /i "listening" | find "1234 "
.{back tick}
" listening{back tick}
"" | find "{back tick}
" port{back tick}
" "(<- beachte die entkommenen Zitate - entschuldige den Begriff,back tick
da ich den tatsächlichen Charakter nicht hinzufügen kann, da er denkt, dass es ein Ausschnitt ist)Öffnen Sie ein Eingabeaufforderungsfenster (als Administrator). Geben Sie im Feld "Start \ Search" "cmd" ein, klicken Sie mit der rechten Maustaste auf "cmd.exe" und wählen Sie "Als Administrator ausführen".
Geben Sie den folgenden Text ein und drücken Sie die Eingabetaste.
netstat -abno
-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 befindet sich der Name der ausführbaren Datei unten in [], oben in der aufgerufenen Komponente usw., 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.
-o Zeigt die jeder Verbindung zugeordnete Prozess-ID an.
Suchen Sie den Port, den Sie abhören, unter "Lokale Adresse".
Schauen Sie sich den Prozessnamen direkt darunter an.
HINWEIS: Um den Prozess unter Task-Manager zu finden
Notieren Sie sich die PID (Prozess-ID) neben dem Port, den Sie betrachten.
Öffnen Sie den Windows Task-Manager.
Wählen Sie die Registerkarte Prozesse.
Suchen Sie nach der PID, die Sie bei der Erstellung des Netzstat in Schritt 1 notiert haben.
Wenn Sie keine PID-Spalte sehen, klicken Sie auf Spalten anzeigen / auswählen. Wählen Sie PID.
Stellen Sie sicher, dass "Prozesse von allen Benutzern anzeigen" ausgewählt ist.
quelle
Holen Sie sich PID und Bildname
Verwenden Sie nur einen Befehl:
wo
9000
sollte durch Ihre Portnummer ersetzt werden.Die Ausgabe enthält ungefähr Folgendes:
Erläuterung:
Es durchläuft jede Zeile von der Ausgabe des folgenden Befehls:
Aus jeder Zeile wird die PID (
%a
- der Name ist hier nicht wichtig) extrahiert (PID ist das5
dritte Element in dieser Zeile) und an den folgenden Befehl übergebenWenn Sie den Header und die Rückgabe der Eingabeaufforderung überspringen möchten , können Sie Folgendes verwenden:
Ausgabe:
quelle
findstr :9000
wenn nicht, würden Sie sogar Apps finden, die die Nummer enthalten (z. B. wenn Sie nach "80" suchen, finden Sie auch Apps auf Port 80, 800, 8000).Zuerst finden wir die Prozess-ID dieser bestimmten Aufgabe, die wir eliminieren müssen, um den Port frei zu bekommen:
Art
Nachdem Sie diesen Befehl in der Windows-Eingabeaufforderung (cmd) ausgeführt haben, wählen Sie die PID aus, die meiner Meinung nach die letzte Spalte ist. Angenommen, dies ist 3312.
Geben Sie nun ein
Sie können dies jetzt überprüfen, indem Sie den
netstat
Befehl eingeben .HINWEIS: Manchmal erlaubt Windows Ihnen nicht, diesen Befehl direkt auf CMD auszuführen. Führen Sie daher zunächst die folgenden Schritte aus:
Über das Startmenü -> Eingabeaufforderung (Rechtsklick auf Eingabeaufforderung und als Administrator ausführen)
quelle
So erhalten Sie eine Liste aller Besitzprozess-IDs, die jeder Verbindung zugeordnet sind:
Wenn Sie einen Prozess beenden möchten, haben Sie die ID und verwenden Sie diesen Befehl, damit der Port frei wird
quelle
Es ist sehr einfach, die Portnummer von einer PID in Windows abzurufen.
Das Folgende sind die Schritte:
Gehen Sie zu Ausführen → Geben Sie cmd → Drücken Sie ein Enter.
Schreiben Sie den folgenden Befehl ...
(Hinweis: Fügen Sie keine eckigen Klammern ein.)
Drücken Sie Enter...
Dann gibt cmd Ihnen die Details des Dienstes, der an diesem Port ausgeführt wird, zusammen mit der PID.
Öffnen Sie den Task-Manager, klicken Sie auf die Registerkarte "Dienst" und passen Sie die PID an die des cmd an.
quelle
Öffnen Sie einfach eine Befehlsshell und geben Sie ein (sagen Sie, Ihr Port ist 123456):
Sie werden alles sehen, was Sie brauchen.
Die Überschriften sind:
Dies ist wie hier erwähnt .
quelle
findstr 123456
(ohne Anführungszeichen) oderfind "123456"
(mit Anführungszeichen). (@Josh)So finden Sie heraus, welcher spezifische Prozess (PID) welchen Port verwendet:
Wobei 1234 die PID Ihres Prozesses ist. [Gehen Sie zu Task-Manager → Registerkarte Dienste / Prozesse, um die PID Ihrer Anwendung zu ermitteln.]
quelle
-n
Flag nicht zweimal gesetzt werden muss.-ano
reicht.Führen Sie PowerShell 5 unter Windows 10 oder Windows Server 2016 aus
Get-NetTCPConnection
Sie Cmdlet aus. Ich denke, 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 durch Formatieren der Ausgabe erhalten. Die Immobilie, die Sie suchen, istOwningProcess
.Wenn Sie die ID des Prozesses ermitteln möchten, der Port 443 überwacht, führen Sie den folgenden Befehl aus:
Formatieren Sie die Ausgabe in eine Tabelle mit den Eigenschaften, nach denen Sie suchen:
Wenn Sie einen Namen des Prozesses herausfinden möchten, führen Sie den folgenden Befehl aus:
quelle
Wenn Sie dazu ein GUI-Tool verwenden möchten, gibt es die TCPView von Sysinternals .
quelle
Geben Sie den folgenden Befehl ein:
netstat -aon | findstr :DESIRED_PORT_NUMBER
Zum Beispiel, wenn ich Port 80 finden möchte:
netstat -aon | findstr :80
Diese Antwort wurde ursprünglich auf diese Frage gepostet .
quelle
Netstat:
-o Besitzprozess
Das Currports- Tool hilft beim Suchen und Filtern
quelle
Öffnen Sie die Eingabeaufforderung - Start → Ausführen →
cmd
oder Startmenü → Alle Programme → Zubehör → Eingabeaufforderung .Art
Ersetzen Sie die
[port_number]
durch die tatsächliche Portnummer, die Sie überprüfen und drücken möchten Enter.Art
Ersetzen Sie die
[PID]
durch die Nummer aus dem obigen Schritt und drücken Sie Enter.quelle
netstat -ao
undnetstat -ab
teilen Sie Ihnen die Anwendung mit. Wenn Sie jedoch kein Systemadministrator sind, wird "Der angeforderte Vorgang erfordert eine Erhöhung" angezeigt.Es ist nicht ideal, aber wenn Sie den Prozess-Explorer von Sysinternals verwenden, können Sie in den Eigenschaften bestimmter Prozesse auf der Registerkarte TCP nachsehen, ob sie den Port verwenden, an dem Sie interessiert sind. Es ist ein bisschen wie eine Nadel und ein Heuhaufen Sache, aber vielleicht hilft es jemandem ...
quelle
Ich empfehle CurrPorts von NirSoft.
CurrPorts kann die angezeigten Ergebnisse filtern. TCPView verfügt nicht über diese Funktion.
Hinweis: Sie können mit der rechten Maustaste auf die Socket-Verbindung eines Prozesses klicken und "Ausgewählte TCP-Verbindungen schließen" auswählen (dies ist auch in TCPView möglich). Dadurch werden häufig Verbindungsprobleme mit Outlook und Lync behoben, nachdem ich die VPNs gewechselt habe. Mit CurrPorts können Sie Verbindungen auch über die Befehlszeile mit dem Parameter "/ close" schließen.
quelle
Eine einzeilige Lösung, die mir hilft, ist diese. Ersetzen Sie einfach 3000 durch Ihren Port:
Bearbeiten: Geändert
kill
zuStop-Process
für eine PowerShell-ähnliche Sprachequelle
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process
Befolgen Sie diese Tools: Von cmd :
C:\> netstat -anob
mit Administratorrechten .Process Explorer
Prozessspeicherauszug
Port Monitor
Alles von sysinternals.com.
Wenn Sie nur wissen möchten, wie der Prozess ausgeführt wird und welche Threads unter den einzelnen Prozessen ausgeführt werden, empfehle ich, mehr darüber zu erfahren
wmic
. Es ist ein wunderbares Kommandozeilen-Tool, das Ihnen viel mehr bietet, als Sie wissen können.Beispiel:
Der obige Befehl zeigt alle 5 Sekunden eine kurze Liste aller Prozesse an. Um mehr zu erfahren, können Sie einfach den
/?
Befehl von Windows verwenden, zum Beispiel:Und so weiter und so fort. :) :)
quelle
Verwenden:
Dies zeigt die PID des Prozesses, der an einem bestimmten Port ausgeführt wird.
Beachten Sie die Prozess-ID, gehen Sie zum Task-Manager und zur Registerkarte Dienste oder Details und beenden Sie den Prozess mit derselben PID.
Auf diese Weise können Sie einen Prozess beenden, der an einem bestimmten Port in Windows ausgeführt wird.
quelle
Versuchen Sie für Benutzer von PowerShell Folgendes
Get-NetworkStatistics
:quelle
Programmatisch benötigen Sie Inhalte von iphlpapi.h , z. B. GetTcpTable2 (). Strukturen wie MIB_TCP6ROW2 enthalten die Eigentümer-PID.
quelle
Mit PowerShell ... ... wäre dies Ihr Freund (ersetzen Sie 8080 durch Ihre Portnummer):
Beispielausgabe
In diesem Beispiel überwacht tnslsnr.exe (OracleXE-Datenbank) Port 8080.
Schnelle Erklärung
Select-String
wird verwendet, um die lange Ausgabe vonnetstat
für die relevanten Zeilen zu filtern .-Pattern
testet jede Zeile gegen einen regulären Ausdruck.-Context 0,1
gibt 0 führende Zeilen und 1 nachfolgende Zeile für jede Musterübereinstimmung aus.quelle
Führen Sie unter Windows an der cmd-Eingabeaufforderung Folgendes aus, wenn Sie Dinge finden möchten, die lauschen oder mit Port 1234 verbunden sind:
quelle
Verwenden Sie das folgende Batch-Skript, das einen Prozessnamen als Argument verwendet und eine
netstat
Ausgabe für den Prozess liefert .quelle
Basierend auf Antworten mit Info und Kill ist es für mich nützlich, sie in einem Befehl zu kombinieren . Und Sie können dies von cmd aus ausführen, um Informationen über Prozesse zu erhalten, die einen bestimmten Port überwachen (Beispiel 8080):
Oder wenn du es töten willst:
Sie können diesen Befehl auch in eine Bat-Datei einfügen (sie unterscheiden sich geringfügig - ersetzen
%i
durch%%i
):Datei
portInfo.bat
Datei
portKill.bat
Dann können Sie von cmd Folgendes tun:
portInfo.bat 8080
oder
portKill.bat 8080
quelle
.\portInfo.bat 800
in PowerShell gibt es so etwas wie:C:\work>for /F "tokens=3 delims=LISTENING" %i in ('netstat -ano | findStr "800" | findStr "["') do (tasklist /fi "pid eq %i" ) C:\work>(tasklist /fi "pid eq 4" ) Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System 4 Services 0 1,820 K
portInfo.bat
in einem Powershell-Terminal eingefügt und dann ausgeführt.\portInfo.bat 8080
. Die Ausgabe war nur der Inhalt der Batchdatei. Sehr gut, ich übersehen etwas. Hinweis: Ich verwende PowerShell 6.2.3 unter Windows 10. Ich habe es auch an einer regulären Eingabeaufforderung versucht, aber das Ergebnis war das gleiche: Ausgabe des Inhalts des Skripts. Ich bin sicher, ich vermisse eine wichtige Information, damit dies funktioniert./nh
:@tasklist /nh /fi "pid eq %i"
? Und genau die Tür:Findstr ":8080"
In meinem Fall wurde der Port (3000) überhaupt nicht verwendet und ist in netstat nicht sichtbar. Aber! Das Deinstallationsprogramm Docker für Windows hat das Problem behoben.
quelle