Ouvrir les ports
Lorsque vous faites beaucoup de programmation de socket, il arrive souvent qu'un programme serveur lors de la recompilation/réexécution ne parvienne pas à se lier à un numéro de port particulier car ce numéro de port est déjà utilisé.
Pour fermer manuellement le numéro de port, il faut d'abord trouver le nom/id du processus qui maintient le port ouvert, puis utiliser la commande kill sur ce processus.
lsof
$ lsof -i :8888 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 8461 enlightened 11u IPv6 138527 0t0 UDP *:8888
Dans l'exemple ci-dessus, on voit que le port 8888 est utilisé par la commande java avec le pid 8461.
Tuez maintenant le processus en faisant l'une des choses suivantes
$ kill 8461 $ killall -9 8461 $ killall -9 java
netstat
La commande netstat peut également être utilisée pour savoir quel processus détient un certain numéro de port
$ netstat -u -ap (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 *:18347 *:* - udp 0 0 localhost:11211 *:* - udp 0 0 localhost:36254 localhost:36254 ESTABLISHED - udp 0 0 localhost:domain *:* - udp 0 0 *:ipp *:* - udp 0 0 *:42038 *:* - udp 0 0 *:17500 *:* 4090/dropbox udp 0 0 *:mdns *:* - udp 0 0 localhost:58797 localhost:7777 ESTABLISHED 9831/ncat udp 0 0 localhost:42724 localhost:domain ESTABLISHED - udp6 0 0 [::]:46282 [::]:* - udp6 0 0 [::]:mdns [::]:* - udp6 0 0 [::]:9999 [::]:* 11598/java
Le port que nous voulons fermer ici est 9999. Et netstat montre que le pid =11598 et le nom de la commande =java
Ici, nous avons utilisé le -u pour le port udp. S'il s'agit d'un port tcp, le commutateur u n'est pas nécessaire.
$ sudo netstat -ap | grep :9050 tcp 0 0 localhost:9050 *:* LISTEN 1613/tor
Une fois l'identifiant/nom du processus trouvé, terminez-le avec la commande kill.
$ kill 11598
fuseur
La commande fuser peut également être utilisée pour connaître le pid du programme. La syntaxe est
fuser -k -n protocol portno
Exemple rapide
$ fuser -k -n udp 7777 7777/udp: 11774