Wie kann ich den aktuellen Prozess / die aktuelle Anwendung entfernen, die bereits einem Port zugewiesen ist?
Zum Beispiel: localhost:8080
Wie kann ich den aktuellen Prozess / die aktuelle Anwendung entfernen, die bereits einem Port zugewiesen ist?
Zum Beispiel: localhost:8080
Antworten:
Schritt 1:
Öffnen Sie cmd.exe (Hinweis: Möglicherweise müssen Sie es als Administrator ausführen, dies ist jedoch nicht immer erforderlich), und führen Sie dann den folgenden Befehl aus:
netstat -ano | findstr :PORT_NUMBER
(Ersetzen Sie PORT_NUMBER durch die gewünschte Portnummer, behalten Sie jedoch den Doppelpunkt bei.)
Der rot eingekreiste Bereich zeigt die PID (Prozesskennung). Suchen Sie die PID des Prozesses, der den gewünschten Port verwendet.
Schritt 2:
Führen Sie als Nächstes den folgenden Befehl aus:
taskkill /PID PID /F
(Diesmal kein Doppelpunkt)
Zuletzt können Sie überprüfen, ob der Vorgang erfolgreich war oder nicht, indem Sie den Befehl in "Schritt 1" erneut ausführen. Wenn es erfolgreich war, sollten Sie keine weiteren Suchergebnisse für diese Portnummer sehen.
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
Schritt 1 (gleiche ist in akzeptierte Antwort geschrieben von KavinduWije ):
netstat -ano | findstr :yourPortNumber
Ändern Sie in Schritt 2 Folgendes:
tskill typeyourPIDhere
Hinweis : taskkill
Funktioniert in einigen Git-Bash-Terminals nicht
Mit Windows 10 Standardtools:
Öffnen Sie Windows PowerShell als Administrator
PID (ProcessID) für Port 8080 suchen:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 HÖREN 77777
Töte den Zombie-Prozess:
taskkill /f /pid 77777
Dabei ist "77777" Ihre PID
set /p port="Enter port: "
-> -> FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
PID in Variable taskkill /f /pid %ProcessId%
-> Tötet die Aufgabe cmd /k
-> Sie das Fenster offen
Wenn Sie GitBash verwenden
Schritt eins:
netstat -ano | findstr :8080
Schritt zwei:
taskkill /PID typeyourPIDhere /F
( /F
beendet den Prozess mit Nachdruck)
In Windows PowerShell Version 1 oder höher, um einen Prozess auf Port 3000 zu stoppen, geben Sie Folgendes ein:
Stop-Process (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force
Wie von @morganpdx vorgeschlagen, gibt es hier mehr PowerShell-ish, bessere Version:
Stop-Process -Id (Get-NetTCPConnection -LocalPort 3000) .OwningProcess -Force
'Stop-Process' is not recognized as an internal or external command,
Stop-Process -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 Fledermausdateien:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
Wenn Sie die Portnummer bereits kennen, reicht es wahrscheinlich aus, ein Software-Beendigungssignal an den Prozess (SIGTERM) zu senden:
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001
.
Für Windows-Benutzer können Sie das CurrPorts- Tool verwenden, um verwendete Ports einfach zu beenden :
Ich habe zookeeper unter Windows ausgeführt und konnte ZooKeeper nicht mit zookeeper-stop.sh am 2181-Port stoppen. Deshalb habe ich diese Methode mit dem doppelten Schrägstrich "//" zum Taskkill ausprobiert. 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.
Wenn Sie Windows Terminal verwenden, ist der Vorgang zum Beenden möglicherweise etwas weniger langwierig. Ich habe Windows Terminal verwendet und kann kill PID
problemlos Prozesse am Port beenden, da das neue Windows Terminal bestimmte Bash-Befehle unterstützt. Zum Beispiel:kill 13300
Der gesamte Prozess sieht also so aus:
netstat -ano | findstr :PORT
kill PID
Zum Beispiel:
PS C:\Users\username> netstat -ano | findstr :4445
TCP 0.0.0.0:4445 0.0.0.0:0 LISTENING 7368
TCP [::]:4445 [::]:0 LISTENING 7368
PS C:\Users\username> kill 7368
PS C:\Users\username> netstat -ano | findstr :4445
PS C:\Users\username>
Sehen Sie, wann ich den ersten Befehl eingegeben habe, um Prozesse an dem Port aufzulisten, der leer zurückgegeben wurde. Das heißt, alle Prozesse werden jetzt beendet.
kill
. Ich werde hier posten, wenn ich finde.
Wenn Sie dies mit Python tun möchten: check Ist es in Python möglich, einen Prozess abzubrechen, der einen bestimmten Port überwacht, z. B. 8080?
Die Antwort von Smunk 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
Einzeilige Lösung mit GitBash :
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
Ersetzen Sie 8080 durch den Port, den Ihr Server abhört.
Wenn Sie es häufig verwenden müssen, fügen Sie ~/.bashrc
der Funktion Folgendes hinzu :
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
und einfach laufen
killport 8080
Wir können dies vermeiden, indem wir IIS einfach mit dem folgenden Befehl neu starten:
IISRESET