Puertos abiertos
Cuando se realiza una gran cantidad de programación de sockets, a menudo sucede que un programa de servidor, cuando se vuelve a compilar/ejecutar, no se vincula a un número de puerto en particular porque ese número de puerto ya está en uso.
Para cerrar el número de puerto manualmente, primero se debe encontrar el nombre/id del proceso que mantiene abierto el puerto y luego usar el comando de eliminación en ese proceso.
lsof
$ lsof -i :8888 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 8461 enlightened 11u IPv6 138527 0t0 UDP *:8888
En el ejemplo anterior, se ve que el puerto 8888 está siendo utilizado por el comando java con pid 8461.
Ahora elimine el proceso realizando cualquiera de las siguientes acciones
$ kill 8461 $ killall -9 8461 $ killall -9 java
netstat
El comando netstat también se puede usar para averiguar qué proceso tiene un determinado número de puerto
$ 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
El puerto que queremos cerrar aquí es 9999. Y netstat muestra que pid =11598 y command name =java
Aquí usamos -u para el puerto udp. Si es un puerto tcp, entonces no se necesita el conmutador u.
$ sudo netstat -ap | grep :9050 tcp 0 0 localhost:9050 *:* LISTEN 1613/tor
Una vez que se encuentra el id/nombre del proceso, termínelo con el comando matar.
$ kill 11598
fusor
El comando fuser también se puede usar para averiguar el pid del programa. La sintaxis es
fuser -k -n protocol portno
Ejemplo rápido
$ fuser -k -n udp 7777 7777/udp: 11774