Comment puis-je supprimer le processus / l'application en cours qui est déjà affecté à un port?
Par exemple: localhost:8080
Comment puis-je supprimer le processus / l'application en cours qui est déjà affecté à un port?
Par exemple: localhost:8080
Réponses:
Étape 1:
Ouvrez cmd.exe (remarque: vous devrez peut- être l'exécuter en tant qu'administrateur, mais ce n'est pas toujours nécessaire), puis exécutez la commande ci-dessous:
netstat -ano | findstr :PORT_NUMBER
(Remplacez PORT_NUMBER par le numéro de port souhaité, mais conservez les deux points)
La zone entourée en rouge indique le PID (identificateur de processus). Localisez le PID du processus qui utilise le port souhaité.
Étape 2:
Ensuite, exécutez la commande suivante:
taskkill /PID PID /F
(Pas de deux points cette fois)
Enfin, vous pouvez vérifier si l'opération a réussi ou non en réexécutant la commande à "l'étape 1". S'il a réussi, vous ne devriez plus voir de résultats de recherche pour ce numéro de port.
taskkill //PID 12552 //F
taskkill /PID PORT_NUMBER /F
Étape 1 (il en est de même dans la réponse acceptée écrite par KavinduWije ):
netstat -ano | findstr :yourPortNumber
Changez à l'étape 2 pour:
tskill typeyourPIDhere
Remarque : taskkill
ne fonctionne pas dans certains terminaux git bash
Avec les outils par défaut de Windows 10:
Ouvrez Windows PowerShell en tant qu'administrateur
Trouvez le PID (ProcessID) pour le port 8080:
netstat -aon | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTEN 77777
Tuez le processus zombie:
taskkill /f /pid 77777
où "77777" est votre PID
set /p port="Enter port: "
-> Port d'entrée FOR /F "tokens=5" %%T IN ('netstat -aon ^| findstr %port% ') DO ( SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
-> Extrait le PID en variable taskkill /f /pid %ProcessId%
-> Tue la tâche cmd /k
-> Gardez la fenêtre ouverte
Si vous utilisez GitBash
La première étape:
netstat -ano | findstr :8080
Deuxième étape:
taskkill /PID typeyourPIDhere /F
( /F
termine avec force le processus)
Dans Windows PowerShell version 1 ou ultérieure pour arrêter un processus sur le port 3000, tapez:
Stop-Process (, (netstat -ano | findstr: 3000) .split () | foreach {$ [$ .length-1]}) -Force
Comme suggéré par @morganpdx, voici une version plus PowerShell, meilleure:
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
Pour une utilisation en ligne de commande:
for /f "tokens=5" %a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %a
Pour une utilisation dans le fichier bat:
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
Si vous connaissez déjà le numéro de port, il suffira probablement d'envoyer un signal de terminaison logicielle au processus (SIGTERM):
kill $(lsof -t -i :PORT_NUMBER)
lsof -nt -i4TCP:9001
.
Pour les utilisateurs de Windows, vous pouvez utiliser l' outil CurrPorts pour tuer facilement les ports en cours d'utilisation:
J'exécutais zookeeper sur Windows et je n'ai pas pu empêcher ZooKeeper de fonctionner sur le port 2181 à l'aide de zookeeper-stop.sh, j'ai donc essayé cette méthode à double barre oblique "//" pour taskkill. Ça a marché
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.
Si vous utilisez Windows Terminal, le processus de mise à mort pourrait être un peu moins fastidieux. J'ai utilisé le terminal Windows et kill PID
fonctionne bien pour moi pour tuer les processus sur le port car le nouveau terminal Windows prend en charge certaines commandes bash. Par exemple:kill 13300
Ainsi, le processus complet ressemblera à ceci-
netstat -ano | findstr :PORT
kill PID
Par exemple:
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>
Voyez quand j'ai tapé la première commande pour lister les processus sur le port retourné vide. Cela signifie que tous les processus sont tués maintenant.
kill
. Je posterai ici si je trouve.
Si vous souhaitez le faire en utilisant Python: cochez Est-il possible en python de tuer le processus qui écoute sur un port spécifique, par exemple 8080?
La réponse de Smunk fonctionne bien. Je répète son code ici:
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
Solution à une ligne utilisant GitBash :
tskill `netstat -ano | grep LISTENING | findstr :8080 | sed -r 's/(\s+[^\s]+){4}(.*)/\1/'`
Remplacez 8080 par le port que votre serveur écoute.
Si vous devez l'utiliser souvent, essayez d'ajouter à votre ~/.bashrc
fonction:
function killport() {
tskill `netstat -ano | findstr LISTENING | findstr :$1 | sed -r 's/^(\s+[^\s]+){4}(\d*)$/\1/'`
}
et exécutez simplement
killport 8080
Nous pouvons éviter cela en redémarrant simplement IIS, en utilisant la commande ci-dessous:
IISRESET