Pregunta Encuentra (y mata) procesa el bloqueo del puerto 3000 en Mac


¿Cómo encuentro procesos que escuchan / usan mis puertos tcp? Estoy en mac os x.

A veces, después de un bloqueo o algún error, mi aplicación Rails está bloqueando el puerto 3000. No puedo encontrarlo usando ps -ef ... ¿Cómo puedo encontrar el objeto estúpido y matarlo, brutalmente ...?

Cuando haces

rails server

yo obtengo

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

Actualización 2014:

Para completar algunas de las respuestas a continuación: Después de ejecutar los comandos kill, puede ser necesario eliminar el archivo pid. rm ~/mypath/myrailsapp/tmp/pids/server.pid


1054
2017-10-04 12:19


origen


Respuestas:


  1. Puedes probar netstat

    netstat -vanp tcp | grep 3000
    
  2. por macOS El Capitán y más nuevo (o si su netstat no es compatible -p), utilizar lsof

    sudo lsof -i tcp:3000 
    
  3. por Centos 7 utilizar

    netstat -vanp --tcp | grep 3000
    

1754
2017-10-04 12:48



Encontrar:

[sudo] lsof -i :3000

Matar:

kill -9 <PID>

1163
2017-09-09 20:58



Nada arriba funcionó para mí. Cualquier persona con mi experiencia podría probar lo siguiente (funcionó para mí):

Correr:

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

luego verifica el estado del PID informado:

ps ax | grep <PID>

finalmente, "vete con eso":

kill -QUIT <PID>

93
2018-03-07 20:24



Puedes usar lsof -i:3000.

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


83
2017-10-04 12:36



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

lsof -ti:3000 | xargs kill

El distintivo -t elimina todo menos el PID de la salida lsof, lo que facilita su eliminación.


76
2017-08-05 21:03



En tus .bash_profile, crea un atajo para terminate el proceso de 3000:

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

Luego llame $terminate si está bloqueado


49
2018-05-16 09:17



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

lsof -n -i4TCP:3000 

Donde 3000 es el número de puerto que el proceso está ejecutando en

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

kill -9 "PID"

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

For Instance, if I want kill the process running on port 8080


39
2017-12-28 04:21



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

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


35
2017-08-03 21:14



Una de las maneras de matar 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

26
2018-02-12 22:14



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

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

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


24
2018-06-23 18:15



Encuentra la conexión abierta 

lsof -i -P | grep -i "escucha"

Mata por ID de proceso

matar -9 'PID'


21
2017-07-17 11:10