Desarrolladores

Puerto ya en uso en un Mac

Solo un proceso puede escuchar en un mismo puerto y dirección TCP. Un segundo servidor se detiene entonces con «address already in use».

Se aplica a: todas las versiones actuales de macOS.Revisado: 29 de octubre de 2026

Síntomas

  • Un servidor de desarrollo se detiene con «EADDRINUSE» o «address already in use».
  • Docker no puede publicar un puerto porque «port is already allocated».
  • El puerto estaba libre antes de un fallo o de reiniciar tu editor.

Causas probables

  • Una copia antigua de tu servidor. Un servidor de una ejecución anterior sigue funcionando en segundo plano.
  • Otra app. Otra app usa el mismo puerto. En macOS 12 y posterior, Receptor AirPlay usa los puertos 5000 y 7000.
  • Un contenedor. Un contenedor en ejecución publica el mismo puerto en el Mac.

Cómo comprobarlo

  1. Busca el proceso que escucha en el puerto. Sustituye 3000 por tu puerto.

    lsof -nP -iTCP:3000 -sTCP:LISTEN

    Salida Las columnas COMMAND y PID indican el proceso.

  2. Para ver procesos de otros usuarios, ejecuta el mismo comando con sudo.

    sudo lsof -nP -iTCP:3000 -sTCP:LISTEN

    Requiere una contraseña de administrador.

  3. Muestra más información sobre el proceso.

    ps -p 12345 -o pid,command
  4. Busca contenedores que publiquen el puerto.

    docker ps

Cómo solucionarlo

  1. Si el proceso es tuyo, detenlo en su propia ventana de Terminal con Control-C.

  2. Si no, envíale la señal de terminación. Usa su PID.

    kill 12345
  3. Si no se detiene, usa kill -9. El proceso no podrá guardar sus datos.

  4. Si el proceso pertenece a macOS, no lo detengas. Elige otro puerto para tu servidor.

  5. Si el puerto es el 5000 o el 7000, lee El puerto 5000 o 7000 está en uso en el Mac: Receptor AirPlay.

Con Kilobat

  1. Muestra los sockets abiertos de un proceso.

    kilobat destinations --pid 12345
  2. Cierra un proceso por su PID. Añade --force solo si no se detiene.

    kilobat quit 12345

Preguntas

¿Por qué lsof no muestra nada si el puerto está en uso?

lsof solo muestra los procesos que puedes examinar. Ejecútalo con sudo para ver todos los procesos.

¿Qué hacen -n y -P?

Evitan que lsof convierta las direcciones en nombres y los puertos en nombres de servicio. La salida es más rápida y muestra números.

Fuentes

Fuentes revisadas el 29 de octubre de 2026. Las páginas man son las que se instalan con macOS; abre una con man <name> en Terminal.