macos - sierra - puertos abiertos en mac




Encuentra(y elimina) el proceso de bloqueo del puerto 3000 en Mac (19)

  1. Puedes probar netstat

    netstat -vanp tcp | grep 3000
    
  2. Para macOS El Capitan y más reciente (o si su netstat no admite -p ), use lsof

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

    netstat -vanp --tcp | grep 3000
    

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

A veces, después de un fallo o algún error, mi aplicación de rieles está bloqueando el puerto 3000. No puedo encontrarlo usando ps -ef ... ¿Cómo encuentro la estupidez y la mato brutalmente ...?

Al hacer

rails server

yo obtengo

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

Actualización de 2014:

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


Añadir a ~/.bash_profile :

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

Luego source ~/.bash_profile y ejecuta

killTcpListen 8080


Debes probar este código usando el terminal:

$ killall -9 ruby

Debes probar esto, esta técnica es independiente del sistema operativo.

En el lado de la 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.


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, llame a $terminate si está bloqueado.


Encontrar:

[sudo] lsof -i :3000

Matar:

kill -9 <PID>

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

npx kill-port 3000

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

npx fkill-cli

PD: Utilizan paquetes javascript de terceros.

Fuentes: tweet | github


Hice una pequeña función para esto, la agrego 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, simplemente puede escribir kill-by-port 3000 para matar su servidor de rieles (sustituyendo 3000 por cualquier puerto en el que se esté ejecutando)

si falla eso, siempre podría escribir kill -9 $(cat tmp/pids/server.pid) desde el directorio raíz de los rieles


Nada de arriba funcionó para mí. Cualquier otra 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 verifique el estado del PID reportado:

ps ax | grep <PID>

finalmente, "comience con ello":

kill -QUIT <PID>

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

lsof -n -i4TCP:3000 

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

Esto devuelve el ID de proceso (PID) y se ejecuta

kill -9 "PID"

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


Paso 1: Encuentra el servidor que se está ejecutando: ps aux | grep puma ps aux | grep puma Paso 2: elimine los servidores Kill -9 [número de servidor]


Posibles formas de lograr esto:

parte superior

El comando superior es la forma tradicional de ver el uso de recursos de su sistema y ver los procesos que están ocupando la mayoría de los recursos del sistema. La parte superior muestra una lista de procesos, con los que utilizan 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 utilizar 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 

Si nada de lo anterior funciona intente:

lsof -n -i4TCP:3000

TL; DR:

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 los dos.

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 terso puede matar automáticamente el proceso:

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

Una de las formas de finalizar 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

Una sola línea para extraer el PID del proceso utilizando 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 su eliminación.


puedes realizar esto usando el nodo

instala el modulo usando

npm install freethenport -g

y en tu terminal

node freethenport 3000

puedes usar el comando

lsof -h

El uso de este comando para encontrar puerto es

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

En tu caso entra

lsof -i :3000

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

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







process