Mon service se plante au démarrage avec le classique :
java.rmi.server.ExportException: Listen failed on port: 9999
Comment puis-je trouver le processus pour le tuer ?
Mon service se plante au démarrage avec le classique :
java.rmi.server.ExportException: Listen failed on port: 9999
Comment puis-je trouver le processus pour le tuer ?
Trouver le PID d'un processus qui utilise un port sous Windows (par exemple, port : "9999")
netstat -aon | find "9999"
-a
Affiche toutes les connexions et les ports d'écoute.
-o
Affiche l'ID du processus propriétaire associé à chaque connexion.
-n
Affiche les adresses et les numéros de port sous forme numérique.
Sortie :
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
Puis tuer le processus par PID
taskkill /F /PID 15776
/F
- Spécifie l'arrêt forcé du ou des processus.
Note : Vous pouvez avoir besoin d'une permission supplémentaire (exécuter depuis l'administrateur) pour tuer certains processus.
Commandement :
netstat -aon | findstr 4723
Sortie :
TCP 0.0.0.0:4723 0.0.0.0:0 LISTENING 10396
Maintenant, coupez l'ID du processus, "10396", en utilisant la fonction for
dans Windows.
Commandement :
for /f "tokens=5" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa
Sortie :
10396
Si vous voulez couper le 4ème chiffre de la valeur signifie "ÉCOUTE" alors commandez dans Windows.
Commandement :
for /f "tokens=4" %a in ('netstat -aon ^| findstr 4723') do @echo %~nxa
Sortie :
ÉCOUTE
Si vous voulez faire cela de manière programmatique, vous pouvez utiliser certaines des options qui vous sont données comme suit dans un script PowerShell :
$processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1]
taskkill /f /pid $processPID
Cependant, soyez conscient que plus vous serez précis, plus le résultat de votre PID sera précis. Si vous savez sur quel hôte le port est censé se trouver, vous pouvez réduire considérablement le champ d'investigation. netstat -aon | findstr "0.0.0.0:9999"
ne renverra qu'une seule demande et très probablement la bonne. En cherchant uniquement sur le numéro de port, vous risquez de renvoyer des processus qui ont seulement 9999
en elle, comme ceci :
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING 15776
UDP [fe80::81ad:9999:d955:c4ca%2]:1900 *:* 12331
Le candidat le plus probable finit généralement en premier, mais si le processus s'est terminé avant que vous n'exécutiez votre script, vous pouvez vous retrouver avec le PID 12331 à la place et tuer le mauvais processus.
Après quelques manipulations avec un script, je suis arrivé à cette action. Copiez-la et enregistrez-la dans un fichier .bat :
FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i
Changez 'find "3306"' en numéro de port qui doit être libre. Ensuite, exécutez le fichier en tant qu'administrateur. Il tuera tous les processus fonctionnant sur ce port.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.