Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.7K
Vistas
Encuentre (y elimine) el proceso de bloqueo del puerto 3000 en Mac

¿Cómo encuentro (y elimino) procesos que escuchan/usan mis puertos TCP? Estoy en macOS.

A veces, después de un bloqueo o algún error, mi aplicación Rails bloquea el puerto 3000. No puedo encontrarlo usando ps -ef ...

al correr

 rails server

yo obtengo

 Address already in use - bind(2) (Errno::EADDRINUSE)

El mismo problema ocurre al detener el proceso de Node.js. Incluso después de que se detiene el proceso y la aplicación deja de ejecutarse, el puerto 3000 está bloqueado. Al iniciar la aplicación de nuevo, obteniendo

 Address already in use (Errno::EADDRINUSE)
over 4 years ago · Santiago Trujillo
40 Respuestas
Responde la pregunta

0

TL;RD:

 lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill

Si se encuentra en una situación en la que hay clientes y servidores que utilizan el puerto, por ejemplo:

 $ lsof -i tcp:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2043 benjiegillam 21u IPv4 0xb1b4330c68e5ad61 0t0 TCP localhost:3000->localhost:52557 (ESTABLISHED) node 2043 benjiegillam 22u IPv4 0xb1b4330c8d393021 0t0 TCP localhost:3000->localhost:52344 (ESTABLISHED) node 2043 benjiegillam 25u IPv4 0xb1b4330c8eaf16c1 0t0 TCP localhost:3000 (LISTEN) Google 99004 benjiegillam 125u IPv4 0xb1b4330c8bb05021 0t0 TCP localhost:52557->localhost:3000 (ESTABLISHED) Google 99004 benjiegillam 216u IPv4 0xb1b4330c8e5ea6c1 0t0 TCP localhost:52344->localhost:3000 (ESTABLISHED)

entonces probablemente no quieras matar a ambos.

En esta situación, puede usar -sTCP:LISTEN para mostrar solo el pid de los procesos que están escuchando. Combinando esto con el formato -t conciso, puede eliminar automáticamente el proceso:

 lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill
over 4 years ago · Santiago Trujillo Denunciar

0

Hice una pequeña función para esto, agrégala a tu archivo rc ( .bashrc , .zshrc o lo que sea)

 function kill-by-port { if [ "$1" != "" ] then kill -9 $(lsof -ni tcp:"$1" | awk 'FNR==2{print $2}') else echo "Missing argument! Usage: kill-by-port $PORT" fi }

luego puede simplemente escribir kill-by-port 3000 para matar su servidor de rieles (sustituyendo 3000 por cualquier puerto en el que se esté ejecutando)

en su defecto, siempre puede escribir kill -9 $(cat tmp/pids/server.pid) desde el directorio raíz de Rails

over 4 years ago · Santiago Trujillo Denunciar

0

Esta única línea de comando es fácil de recordar:

npx kill-port 3000

También puede eliminar varios puertos a la vez:

npx kill-port 3000 3001 3002

Para una herramienta más potente con búsqueda:

npx fkill-cli


PD: Usan paquetes javascript de terceros. npx viene integrado con Node.js.

Fuentes: tuit | github

over 4 years ago · Santiago Trujillo Denunciar

0

Para matar a la fuerza un proceso como ese, use el siguiente comando

 lsof -n -i4TCP:3000 OR lsof -i:3000

Donde 3000 es el número de puerto en el que se ejecuta el proceso

esto devuelve la identificación del proceso (PID) y ejecuta

 kill -9 "PID"

Reemplace PID con el número que obtiene después de ejecutar el primer comando

Por ejemplo, si quiero eliminar el proceso que se ejecuta en el puerto 8080

¿Por qué kill -9 PID no funciona? Si intenta eliminar un proceso con su PID y aún se ejecuta en otro PID, parece que ha iniciado ese proceso en una cuenta diferente, lo más probable es que sea una cuenta raíz. así que inicia sesión con sudo su y mátalo

over 4 years ago · Santiago Trujillo Denunciar

0

Agregar a ~/.bash_profile :

 function killTcpListen () { kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t) }

Luego source ~/.bash_profile y ejecute

killTcpListen 8080

over 4 years ago · Santiago Trujillo Denunciar

0

Usando la herramienta fkill de sindresorhus , puede hacer esto:

 $ fkill :3000
over 4 years ago · Santiago Trujillo Denunciar

0

Deberías probar este código usando la terminal:

 $ killall -9 ruby
over 4 years ago · Santiago Trujillo Denunciar

0

Posibles formas de lograr esto:

cima

El comando superior es la forma tradicional de ver el uso de recursos de su sistema y ver los procesos que consumen la mayoría de los recursos del sistema. Arriba muestra una lista de procesos, con los que usan la mayor cantidad de CPU en la parte superior.

PD

El comando ps enumera los procesos en ejecución. El siguiente comando enumera todos los procesos que se ejecutan en su sistema:

 ps -A

También puede canalizar la salida a través de grep para buscar un proceso específico sin usar ningún otro comando. El siguiente comando buscaría el proceso de Firefox:

 ps -A | grep firefox

La forma más común de pasar señales a un programa es con el comando kill.

 kill PID_of_target_process

lsof

Lista de todos los archivos abiertos y los procesos que los abrieron.

 lsof -i -P | grep -i "listen" kill -9 PID

o

 lsof -i tcp:3000
over 4 years ago · Santiago Trujillo Denunciar

0

Una de las formas de eliminar un proceso en un puerto es usar la biblioteca de python: freeport ( https://pypi.python.org/pypi/freeport/0.1.9 ). Una vez instalado, simplemente:

 # install freeport pip install freeport # Once freeport is installed, use it as follows $ freeport 3000 Port 3000 is free. Process 16130 killed successfully
over 4 years ago · Santiago Trujillo Denunciar

0

Ejecutar en línea de comando en OS-X El Captain:

 kill -kill `lsof -t -i tcp:3000`

La opción concisa de lsof devuelve solo el PID.

over 4 years ago · Santiago Trujillo Denunciar

0

Encuentra la conexión abierta

lsof -i -P | grep -i "escuchar"

Matar por ID de proceso

matar -9 'PID'

over 4 years ago · Santiago Trujillo Denunciar

0

Una sola línea para extraer el PID del proceso usando el puerto 3000 y eliminarlo.

 lsof -ti:3000 | xargs kill

El indicador -t elimina todo menos el PID de la salida de lsof, lo que facilita eliminarlo.

over 4 years ago · Santiago Trujillo Denunciar

0

Encontrar:

 sudo lsof -i :3000

Matar:

 kill -9 <PID>

TENGA EN CUENTA: -9 elimina el proceso de inmediato y no le da ninguna posibilidad de limpiarse después de sí mismo. Esto puede causar problemas. Considere usar -15 (TERM) o -3 (QUIT) para una terminación más suave que permita que el proceso se limpie después de sí mismo.

over 4 years ago · Santiago Trujillo Denunciar

0

Nada de lo anterior funcionó para mí. Cualquier otra persona con mi experiencia podría intentar lo siguiente (funcionó para mí):

Correr:

 lsof -i :3000 (where 3000 is your current port in use)

luego verifique el estado del PID informado:

 ps ax | grep <PID>

finalmente, "fuera con eso":

 kill -QUIT <PID>
over 4 years ago · Santiago Trujillo Denunciar

0

En su .bash_profile , cree un acceso directo para terminate el proceso 3000:

 terminate(){ lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 }

Luego, llama a $terminate si está bloqueado.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar lsof -i:3000 .

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

over 4 years ago · Santiago Trujillo Denunciar

0

  1. Puedes probar netstat

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

     lsof -i tcp:3000
  3. Para el uso de Centos 7 :

     netstat -vanp --tcp | grep 3000
over 4 years ago · Santiago Trujillo Denunciar

0

lsof -i tcp:port_number - enumerará el proceso que se ejecuta en ese puerto

kill -9 PID - matará el proceso

en tu caso será

lsof -i tcp:3000 desde su terminal encuentre el PID del proceso

kill -9 PID

over 4 years ago · Santiago Trujillo Denunciar

0

Puedes probar esto

 netstat -vanp tcp | grep 3000
over 4 years ago · Santiago Trujillo Denunciar

0

en sistema operativo mac

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

over 4 years ago · Santiago Trujillo Denunciar

0

Para matar puertos múltiples.

 $ npx kill-port 3000 8080 8081 Process on port 3000 killed Process on port 8080 killed Process on port 8081 killed

¡Espero que esto ayude!

over 4 years ago · Santiago Trujillo Denunciar

0

Estos dos comandos lo ayudarán a encontrar y eliminar el proceso del servidor

  1. lsof-wni tcp:3000
  2. matar -9 pid
over 4 years ago · Santiago Trujillo Denunciar

0

Yo uso esto:

cat tmp/pids/server.pid | pbcopy

Luego kill -9 'paste'

over 4 years ago · Santiago Trujillo Denunciar

0

Si desea una forma libre de código, abra el administrador de actividades y fuerce el nodo de eliminación :)

over 4 years ago · Santiago Trujillo Denunciar

0

Solución rápida y fácil :

 kill -9 $(lsof -ti:3000)

Para múltiples puertos:

 kill -9 $(lsof -ti:3000,3001)

#3000 es el puerto a liberar

Elimine múltiples puertos con un comando de una sola línea:

 kill -9 $(lsof -ti:3000,3001)

#Aquí múltiples puertos 3000 y 3001 son los puertos a liberar

lsof-ti:3000

Si el prot está ocupado, el comando anterior devolverá algo como esto: 82500 (ID de proceso)

lsof-ti:3001

82499

lsof-ti:3001,3000

82499 82500

matar -9 $(lsof -ti:3001,3000)

Termina los procesos 82499 y 82500 en un solo comando.

Para usar esto en scripts de package.json :

 "scripts": { "start": "kill -9 $(lsof -ti:3000,3001) && npm start" }

En la terminal puedes usar:

 npm run start
over 4 years ago · Santiago Trujillo Denunciar

0

Debería probar esto, esta técnica es independiente del sistema operativo.

Dentro de su aplicación hay una carpeta llamada tmp, dentro de la cual hay otra carpeta llamada pids. Ese archivo contiene el archivo pid del servidor. Simplemente elimine ese archivo. El puerto se mata automáticamente.

Creo que esta es la manera fácil.

over 4 years ago · Santiago Trujillo Denunciar

0

Encuentra y mata:

Esta única línea de comando es fácil y funciona correctamente.

 kill -9 $(lsof -ti tcp:3000)
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay una función bash de ayuda para matar múltiples procesos por nombre o puerto

 fkill() { for i in $@;do export q=$i;if [[ $i == :* ]];then lsof -i$i|sed -n '1!p'; else ps aux|grep -i $i|grep -v grep;fi|awk '{print $2}'|\ xargs -I@ sh -c 'kill -9 @&&printf "X %s->%s\n" $q @';done }

Uso:

 $ fkill [process name] [process port]

Ejemplo:

 $ fkill someapp :8080 node :3333 :9000
over 4 years ago · Santiago Trujillo Denunciar

0

Paso 1: busque el servidor que se está ejecutando: ps aux | grep puma Paso 2: Matar a esos servidores Matar -9 [número de servidor]

over 4 years ago · Santiago Trujillo Denunciar

0

Para ver los procesos que bloquean el puerto:

netstat -vanp tcp | grep 3000

Para eliminar los procesos que bloquean el puerto:

kill $(lsof -t -i :3000)

over 4 years ago · Santiago Trujillo Denunciar

0

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

Esto le dará solo el pid, probado en MacOS.

over 4 years ago · Santiago Trujillo Denunciar

0

solo escribe en la terminal

 sudo kill -9 $(lsof -i :3000 -t)

Espero, sea trabajo.

over 4 years ago · Santiago Trujillo Denunciar

0

Después de ejecutar los comandos de eliminación, es posible que sea necesario eliminar el archivo pid:

 rm ~/mypath/myrailsapp/tmp/pids/server.pid
over 4 years ago · Santiago Trujillo Denunciar

0

Yo suelo:

lsof -wni tcp:3000

Obtenga el PID y:

kill -9 <PID>

over 4 years ago · Santiago Trujillo Denunciar

0

mi frase favorita: sudo kill `sudo lsof -t -i:3000`

over 4 years ago · Santiago Trujillo Denunciar

0

Para eliminar el puerto 3000 en Mac, ejecute el siguiente comando

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)

over 4 years ago · Santiago Trujillo Denunciar

0

kill -9 $(lsof -ti:3000)

funciona para mí en macOS siempre.

Si está trabajando en un proyecto de node.js, puede agregarlo a scripts de package.json como;

 "scripts": { ... "killme": "kill -9 $(lsof -ti:3000)", ... },

luego

 npm run killme

--

Además, si desea agregar un alias de todo el sistema para su macOS, siga estos pasos;

Navegue a su directorio de inicio:

 cd ~

Abra el perfil .bash_profile o zsh usando nano o vim:

 vi .bash_profile

Agregue un alias (presione i):

 alias killme="kill -9 $(lsof -ti:3000)"

guardar el archivo

reiniciar terminal

escribe killme en la terminal

Por supuesto, puede cambiar el puerto 3000 a lo que desee.

over 4 years ago · Santiago Trujillo Denunciar

0

Si está utilizando Zsh y no quiere recordar los comandos de varias tuberías, simplemente agregue las siguientes líneas de código a ~/.zshrc :

 function murder() { lsof -nti:$1 | xargs kill -9 }

Y luego, cada vez que necesite eliminar un proceso en un puerto específico, simplemente use:

 murder 3000

PS siéntase libre de cambiar el nombre del comando y mejorarlo :)

over 4 years ago · Santiago Trujillo Denunciar

0

Explicación de pasos con terminal o/p

Tengo Macbook Pro (Catalina), 1 día encontré el siguiente problema mientras ejecutaba el servidor Django (que se ejecuta en el puerto 8000 de forma predeterminada):

Python Manage.py Runerver 3000

 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ python manage.py runserver 3000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). July 27, 2021 - 23:54:05 Django version 3.2.3, using settings 'automated_classification.settings' Starting development server at http://127.0.0.1:3000/ Quit the server with CONTROL-C. Error: That port is already in use.

Traté de usar el proporcionado y ejecutado, pero ejecutar solo 1 de ellos no resolvió mi problema (sé que también hubo otras respuestas, pero de alguna manera resolví mi problema). Por ejemplo, traté de volver a ejecutar el comando anterior, pero tampoco funcionó (todavía los procesos estaban activos).

Así que finalmente usé la respuesta de @Cris con 1 paso adicional más como él y otros han sugerido. Entonces, mi respuesta es simplemente usar sus comandos con la salida de la Terminal para que las ejecuciones sean más claras para usted.

lsof -P | grep':3000' | awk '{imprimir $2}'

 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ lsof -P | grep ':3000' | awk '{print $2}' 36239 38272

Ahora tengo la lista de identificaciones para matar, hagámoslo.

matar -9 <PID>

 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 36239 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 36239 -bash: kill: (36239) - No such process (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 38272 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 38272 -bash: kill: (38272) - No such process

Y ahora, intentemos volver a ejecutar el comando.

Python Manage.py Runerver 3000

 (venv) Rishikeshs-MacBook-Pro:learn-django hygull$ python manage.py runserver 3000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). July 27, 2021 - 23:55:53 Django version 3.2.3, using settings 'project.settings' Starting development server at http://127.0.0.1:3000/ Quit the server with CONTROL-C.

FINAL

matar -9 $(lsof -P | grep ':3000' | awk '{imprimir $2}')

Puede combinar los 2 pasos anteriores en 1 línea y ejecutar para eliminar el proceso de escucha en el puerto 3000 .

over 4 years ago · Santiago Trujillo Denunciar

0

Me funciona para terminar el nodo (Mac OS Catalina)

 killall -9 node
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda