Mon service 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?
Ouvrez simplement une commande Shell et tapez: (en disant que votre port est 123456)
netstat -a -n -o | find "123456"
Vous verrez tout ce dont vous avez besoin
Les en-têtes sont:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:37 0.0.0.0:0 LISTENING 1111
Trouver le PID du processus utilisant un port sous Windows (par exemple, le port: "9999")netstat -aon | find "9999"
-a
Affiche toutes les connexions et les ports d'écoute.
-o
Affiche l'ID de 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 de mettre fin de façon forcée au (x) processus.
Remarque: vous aurez peut-être besoin d'une autorisation supplémentaire (exécutée à partir d'admin) pour tuer certains processus
Après quelques manipulations de script, je suis arrivé à cette action. Copiez-le et enregistrez-le dans un fichier .bat:
FOR /F "usebackq tokens=5" %%i IN (`netstat -aon ^| find "3306"`) DO taskkill /F /PID %%i
change 'find "3306"' dans le numéro de port qui doit être libre. Ensuite, exécutez le fichier en tant qu'administrateur. Il va tuer tous les processus en cours d'exécution sur ce port
Si vous souhaitez effectuer cette opération par programme, vous pouvez utiliser certaines des options qui vous sont proposées comme suit dans un script PowerShell:
$processPID = $($(netstat -aon | findstr "9999")[0] -split '\s+')[-1]
taskkill /f /pid $processPID
Toutefois; Sachez que plus vous serez précis, plus votre résultat PID sera précis. Si vous savez sur quel hôte le port est supposé être connecté, vous pouvez le réduire beaucoup. netstat -aon | findstr "0.0.0.0:9999"
ne renverra qu'une application et très probablement la bonne. Seule la recherche sur le numéro de port peut vous amener à renvoyer des processus qui ne contiennent que 9999
, 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 est terminé avant que vous n'exécutiez votre script, vous pouvez vous retrouver avec le PID 12331 et tuer le mauvais processus.
Cela aide à trouver le PID en utilisant le numéro de port.
lsof -i tcp:port_number
commande: netstat -aon | findstr 4723
sortie: TCP 0.0.0.0:4723 0.0.0.0:0 ÉCOUTE 10396
maintenant couper le processus id "10396" en utilisant pour la commande dans Windows.
commande: pour/f "tokens = 5"% a dans ('netstat -aon ^ | findstr 4723') fait @echo% ~ nxa
sortie: 10396
si vous voulez couper le 4ème nombre de valeur signifie "LISTENING", alors commande dans windows.
commande: pour/f "tokens = 4"% a dans ('netstat -aon ^ | findstr 4723') faire @echo% ~ nxa
sortie: ECOUTE
J'espère que ma réponse vous aidera !!