Encontrar (y matar) el proceso que bloquea el puerto 3000 en Mac

¿Cómo puedo encontrar (y matar) los procesos que escuchan/utilizan mis puertos tcp? I'm en mac os x.

A veces, después de una caída o algún error, mi aplicación rails bloquea el puerto 3000. No puedo encontrarlo usando ps -ef...

Al hacer

rails server

Obtengo

Dirección ya en uso - bind(2) (Errno::EADDRINUSE)

Actualización de 2014:

Para completar algunas de las respuestas de abajo: Después de ejecutar los comandos kill, podría ser necesario borrar el archivo pid rm ~/mypath/myrailsapp/tmp/pids/server.pid

Solución
  1. Puedes probar con netstat.

     netstat -vanp tcp | grep 3000
  2. Para macOS El Capitan y posteriores (o si su netstat no soporta -p), utilice lsof.

     sudo lsof -i tcp:3000
  3. Para Centos 7 utilice

     netstat -vanp --tcp | grep 3000
Comentarios (14)

Puede utilizar lsof -i:3000.

Esto es "Listar archivos abiertos". Esto le da una lista de los procesos y qué archivos y puertos utilizan.

Comentarios (2)
lsof -P | grep ':3000' | awk '{print $2}'

Esto le dará sólo el pid, probado en MacOS.

Comentarios (5)