Wie kann man den Prozess, der gerade einen Port auf localhost benutzt, unter Windows beenden?

Wie kann man den aktuellen Prozess/die aktuelle Anwendung, der/die bereits einem Anschluss zugewiesen ist, entfernen?

Zum Beispiel: localhost:8080

Lösung

Schritt 1

Führen Sie die Befehlszeile als Administrator aus. Führen Sie dann den unten genannten Befehl aus. Geben Sie Ihre Portnummer in IhrePortNummer ein

netstat -ano | findstr :IhrePortNummer

Der rot umrandete Bereich zeigt die PID (Prozesskennung)

Schritt 2

Nachdem Sie die PID identifiziert haben, führen Sie diesen Befehl aus.

taskkill /PID typeyourPIDhere /F

P.S. Führen Sie den ersten Befehl erneut aus, um zu prüfen, ob der Prozess noch verfügbar ist oder nicht. Sie werden eine leere Zeile erhalten, wenn der Prozess erfolgreich beendet wurde.

Kommentare (8)

Schritt 1 (derselbe ist in der akzeptierten Antwort von KavinduWije):

netstat -ano | findstr :yourPortNumber

Ändern Sie in Schritt 2 zu:

tskill typeyourPIDhere 

Dies, da taskkill in einigen Git-Bash-Befehlen nicht funktioniert

Kommentare (8)

Wenn Sie GitBash verwenden

Schritt eins:

netstat -ano | findstr :8080

Schritt zwei:

taskkill /PID typeyourPIDhere /F 

(/F bricht den Prozess zwangsweise ab)

Kommentare (2)

mit WINDOWS10-Standardwerkzeugen:

Schritt 1: Öffnen von Windows PowerShell als Administrator

Schritt 2: Suchen Sie die PID (ProzessID) für Port 8080:

netstat -aon | findstr 8080

TCP 0.0.0.0.0:8080 0.0.0.0.0:0 ZUHÖREN 77777

Schritt 3: Töten Sie den Zombie-Prozess:

taskkill /f /pid 77777

wo "77777" ist Ihr PID

Kommentare (1)

In Windows PowerShell Version 1 oder höher zum Stoppen eines Prozesses auf Port 3000 Typ:

Prozess anhalten (,(netstat -ano | findstr :3000).split() | foreach {$[$.länge-1]}) -Erzwingen


Wie von @morganpdx vorgeschlagen, gibt es hier eine PowerShell-ähnlichere, bessere Version:

Stop-Prozess-Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess -Force

Kommentare (5)

Zur Verwendung in der Befehlszeile:

for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a

Zur Verwendung in Fledermausdatei:

for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
Kommentare (2)

Wenn Sie die Port-Nummer bereits kennen, reicht es wahrscheinlich aus, ein Software-Terminierungssignal an den Prozess zu senden (SIGTERM):

kill $(lsof -t -i :PORT_NUMBER)
Kommentare (1)

Für Windows-Benutzer können Sie das Tool [CurrPorts][1] verwenden, um Ports, die in Benutzung sind, einfach zu löschen Bildbeschreibung hier eingeben][2]][2][2]

[1]: https://www.nirsoft.net/utils/cports.html#DownloadLinks [2]: https://i.stack.imgur.com/wSqrm.png

Kommentare (0)

Ich habe zookeeper @windows ausgeführt, war't in der Lage, den Zookeeper, der am Port 2181 lief, mit zookeeper-stop.sh zu stoppen, also versuchte ich diesen doppelten Schrägstrich "//" Methode zum Taskkill aus. Es funktionierte

     1. netstat -ano | findstr :2181
       TCP    0.0.0.0:2181           0.0.0.0:0              LISTENING       8876
       TCP    [::]:2181              [::]:0                 LISTENING       8876

     2.taskkill //PID 8876 //F
       SUCCESS: The process with PID 8876 has been terminated.
Kommentare (0)

Sie können dies tun, indem Sie eine Fledermausdatei ausführen:

@ECHO OFF                                                                              
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr "9797" ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine                                                   
:SkipLine                                                                              
echo ProcessId to kill = %ProcessId%
taskkill /f /pid %ProcessId%
PAUSE
Kommentare (0)

Falls Sie es mit Python machen wollen: siehe https://stackoverflow.com/questions/20691258/is-possible-in-python-kill-process-which-is-running-on-specific-port-for-exampl Die Antwort von [Smunk][1] funktioniert gut. Ich wiederhole seinen Code hier:

from psutil import process_iter
from signal import SIGTERM # or SIGKILL

for proc in process_iter():
    for conns in proc.connections(kind='inet'):
        if conns.laddr.port == 8080:
            proc.send_signal(SIGTERM) # or SIGKILL
            continue 

[1]: https://stackoverflow.com/users/905256/smunk

Kommentare (0)

Wir können dies durch einen einfachen Neustart des IIS mit dem unten stehenden Befehl vermeiden.

IISRESET

Kommentare (0)