Wie kann man den aktuellen Prozess/die aktuelle Anwendung, der/die bereits einem Anschluss zugewiesen ist, entfernen?
Zum Beispiel: localhost:8080
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.
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
Wenn Sie GitBash verwenden
Schritt eins:
netstat -ano | findstr :8080
Schritt zwei:
taskkill /PID typeyourPIDhere /F
(/F
bricht den Prozess zwangsweise ab)
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
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
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
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)
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
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.
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
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
Wir können dies durch einen einfachen Neustart des IIS mit dem unten stehenden Befehl vermeiden.
IISRESET