sierra saber puertos puerto procesos mac innecesarios high eliminar como cerrar abrir abiertos macos process

macos - saber - Encuentra(y elimina) el proceso de bloqueo del puerto 3000 en Mac



eliminar procesos innecesarios en mac (28)

¿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


  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


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


Aquí hay una función de bash auxiliar para eliminar 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


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.


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

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

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


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>


Encuentra y mata:

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

kill -9 $(lsof -ti tcp:3000)


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


Intente usar Ctrl + C en lugar de Ctrl + Z para terminar la aplicación que se estaba ejecutando anteriormente.

De lo contrario, puede encontrar el proceso ejecutándose en el puerto 3000 ejecutando [sudo] lsof -i :3000

Luego mata el proceso kill -9 <PID>


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


Para ver los procesos que bloquean el puerto:

netstat -vanp tcp | grep 3000

Para matar los procesos bloqueando el puerto:

kill $(lsof -t -i :3000)


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


Puedes usar lsof -i:3000 .

Eso es "Lista de archivos abiertos". Esto le proporciona una lista de los procesos y los archivos y puertos que utilizan.


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


También puede cambiar la configuración en el puerto del servidor (config / puma.rb) línea 12.

$ port ENV.fetch ("PORT") {3000}

a

$ port ENV.fetch ("PORT") {3001}

o cualquier puerto específico que estime conveniente. esto evita la necesidad de ir en una búsqueda del tesoro para los procesos. Siempre puedes reiniciar tu computadora. también cuando inicia el servidor en otro puerto, normalmente eliminará el primer servidor que haya abierto.


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.


Usando la herramienta github , puedes hacer esto:

$ fkill :3000


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


Encuentra la conexión abierta

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

Matar por ID de proceso

kill -9 ''PID''


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

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