Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.7K
Views
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 answers
Answer question

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 Report

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 Report

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 Report

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 Report

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 Report

0

Usando la herramienta fkill de sindresorhus , puede hacer esto:

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

0

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

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

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

0

Puedes probar esto

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

0

en sistema operativo mac

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

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report

0

Yo uso esto:

cat tmp/pids/server.pid | pbcopy

Luego kill -9 'paste'

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

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 Report

0

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

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

over 4 years ago · Santiago Trujillo Report

0

solo escribe en la terminal

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

Espero, sea trabajo.

over 4 years ago · Santiago Trujillo Report

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 Report

0

Yo suelo:

lsof -wni tcp:3000

Obtenga el PID y:

kill -9 <PID>

over 4 years ago · Santiago Trujillo Report

0

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

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report

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 Report

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 Report

0

Me funciona para terminar el nodo (Mac OS Catalina)

 killall -9 node
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!