J’ai une application qui utilise le port TCP 16969. Elle nécessite parfois un redémarrage rapide du kernel du logiciel. Mais si je le lance trop vite, alors je suis verrouillé avec Exception in thread "main" java.net.BindException: Address already in use
.
Donc, sans aucune excuse, je veux déclencher mon script BASH qui peut tuer n’importe quel port en cours d’exécution ou d’écoute avec 16969. Mais comment puis-je le faire?
$ lsof -w -n -i tcp:16969 # this gives me a list of 50 lines but how can i tell apply kill to all on this port?
Je pense que:
lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs kill
Devrait faire le tour.
Pour vérifier les commandes qu’il veut exécuter avant de le lâcher, ajoutez un echo
avant le kill
comme ceci:
lsof -i tcp:22 | grep LISTEN | awk '{print $2}' | xargs echo kill
Il listera alors les PID qu’il tuerait normalement
Avez-vous essayé d’utiliser tcpkill?
Exemple:
tcpkill -i eth0 port 21
fuser -k 16969 / tcp
peut libérer ce port. Ceci est une commande utile qui peut être utilisée pour fermer des ports. quel que soit ce qu’il est. Cordialement
J’ai souvent ce problème en utilisant JBoss dans Netbeans …
Dans un type de terminal:
sudo netstat -lnp | grep 8080
Ensuite, il affiche quelque chose comme:
tcp6 0 0 :::8080 :::* LISTEN 1722/java
Ensuite, utilisez:
kill 1722 //replace 1722 by the PID you found.
J’espère que ça va aider!