Cannot bind: address already in use
Ya sea que estemos intentando iniciar algún servicio, o quizás desarrollando alguna aplicación de red, el mensaje del título tarde o temprano se nos presenta, a veces dejandonos dubitativos.
El mensaje en cuestión significa que el proceso que acabamos de ejecutar intentó reservar algún puerto ya reservado por otro proceso, ¿pero cual será el usurpador de puertos?
Por suerte, tenemos una manera de saberlo de forma fácil.
Gracias al comando fuser, podemos darnos cuenta muy fácilmente de cual es el número de proceso que nos da problemas. Supongamos que necesito saber qué proceso está ocupando ese puerto UDP número 53 que yo quiero usar para mi servidor de juegos de canasta por Internet, debería ejecutar como root:
# fuser 53/udp 53/udp: 2946
Claramente vemos que el proceso cuyo número es 2946 es el que está estorbandonos.
Para no quedarnos fuera de la temática mágica de esta serie de artículos, combinemos este comando con un poco de otros ingredientes:
# ps ax | grep `fuser 53/udp` 53/udp: 2946 ? Ssl 0:02 /usr/sbin/named -u bind
Bien, es el proceso del BIND. Como un servidor de DNS es algo no tan importante como un buen juego de canasta, si o si necesitamos eliminar ese proceso que nos molesta, la pócima final que nos salva de este problema es:
# kill `ps ax | grep $(fuser 53/udp) | awk '{print $1}'`
He aqui una manera de divertirse matando procesos, existe otra mucho más interesante, pero como no es orientada a la línea de comandos, no la vamos a ver por el momento.
Como recomendación: dejemos los servidores de juego de canasta y otros servicios similares para los puertos mayores a 1024


(4 votos)
Comentarios recientes