[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í:

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