[Publicación de utilidad] ¿Qué se está ejecutando en el puerto 8000? (Y cómo detenerlo)

tl; dr ...

kill -9 $ (lsof -i TCP: 8000 | grep LISTEN | awk '{print $ 2}')

- - - - -

En sus viajes, es posible que haya encontrado una pantalla que se ve así:

¿Qué hay en el puerto 8000?

Si no se está ejecutando ningún otro servicio obvio, eso probablemente significa que tiene algo que usa el puerto 8000 como daemon o en segundo plano. Hay muchas maneras de hacer esto, pero el siguiente comando ha demostrado ser útil para descubrir exactamente qué se está ejecutando en un puerto en particular (¡y funciona en instancias estériles de AWS EC2!):

$ lsof -i TCP: 8000 | grep ESCUCHE

Consulte la sección "lectura adicional" a continuación para obtener detalles, pero el comando lsof enumera los "archivos abiertos" [de ahí el nombre] y el indicador -i muestra las conexiones de red. Pasamos TCP: 8000 y luego grep para los registros que tienen ESCUCHAR en ellos (es decir, procesos de escucha / listo en 8000)

Estamos más interesados ​​en el número en la segunda columna, el PID, porque podemos usarlo para matar el proceso.

[Asegúrese 100% de que el PID que cree que quiere matar es el que realmente quiere matar. ¡Esto puede ser muy destructivo!]

$ kill -9 PID_TO_KILL

Como un solo banger algo torpe, incluso puede ejecutar esto (intercambie $ PORTNUM con su puerto de destino):

kill -9 $ (lsof -i TCP: $ PORTNUM | grep LISTEN | awk '{print $ 2}')

Hay muchas maneras de hacer esto (ver aquí: http://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac), pero esto es rápido y ... Un enfoque sucio podría ayudar a salvar a alguien un poco de tiempo.

Crédito extra: ejemplo

Si desea trabajar con un ejemplo de desbloqueo de puertos, consulte este repositorio o, alternativamente, ingrese los siguientes comandos:

$ git clone https://github.com/valgaze/kill_port_example _tmpkill_port_example && cd _tmpkill_port_example && npm start

Lo anterior clonará el repositorio en _tmpkill_port_example y luego iniciará un servidor en el puerto 8000 como daemon (consulte package.json)

Luego, en otra sesión de terminal en el mismo directorio (_tmpkill_port_example) intente ejecutar el siguiente comando para ver el error "Error: escuchar EADDRINUSE ::: 8000":

$ npm ejecutar boot_server2

Desde aquí: use lo que aprendió anteriormente para poder iniciar el servidor2 en el puerto 8000 (que puede salir con CTRL-C)

Válvula de escape si realmente rompes algo:

$ npm ejecutar limpieza

Otras lecturas

http://www.thegeekstuff.com/2012/08/lsof-command-examples