¿Cómo puedo matar cualquier proceso que esté usando el puerto 8080 para poder vagar?

93

En MacOSX, estoy usando Packer para construir una caja Vagrant, así que necesito abrirla y derribarla continuamente. Estoy intentando 'vagabundear' y recibo el error estándar porque el puerto está en uso:

"Vagrant no puede reenviar los puertos especificados en esta máquina virtual, ya que colisionarían con alguna otra aplicación que ya esté escuchando en estos puertos. El puerto reenviado a 8080 ya está en uso en la máquina host".

La solución parece bastante simple: solo necesito identificar el proceso que mantiene abierto el puerto 8080 y matar ese proceso, ¿verdad? No es así de fácil.


Si ejecuto el comando:

nmap localhost -p 8080

Recibo el siguiente resultado:

PORT     STATE SERVICE
8080/tcp open  http-proxy

Si ejecuto el siguiente comando:

top -o prt

El puerto más alto en uso en 1360


Si ejecuto el siguiente comando:

 netstat -tulpn | grep :8080

Recibo:

netstat: n: unknown or uninstrumented protocol

Si ejecuto el siguiente comando:

lsof -i :8080

No recibo salida


Si reinicio mi computadora, el puerto ahora está disponible y ahora puedo 'vagabundear'.

¿Cómo puedo eliminar cualquier proceso que esté usando el puerto 8080 para poder vagar sin reiniciar mi computadora?

Jason Curran
fuente

Respuestas:

164

Esto puede ayudar

lsof -n -i4TCP:8080 

El PID es el segundo campo de la salida.

O tratar:

lsof -i -P
Mark Setchell
fuente
Gracias por intentarlo, pero dije en mi pregunta que no recibo ningún resultado del comando lsof.
Jason Curran
He añadido otra posibilidad.
Mark Setchell
¿Tiene una impresora HP LaserJet? blog.hgomez.net/blog/2010/09/25/…
Mark Setchell
3
Gracias Mark! Por alguna razón, después de reiniciar mi computadora, los comandos lsof no producían nada, y ahora sí. Ahora, los 3 de los comandos lsof están funcionando y puedo identificar el ID del proceso y matarlo con: sudo kill -9 000 ... Donde 000 es el ID del proceso. El nombre del proceso es "VBoxHeadless". Si obtengo más información sobre por qué no funcionaba anteriormente, lo informaré. FYI: No tengo una impresora adjunta.
Jason Curran
Intente sudo lsof -n -i4TCP:8080recoger procesos propiedad de root.
mpelzsherman
90

Solución rápida y rápida:

lsof -n -i4TCP:8080

PIDes el segundo campo. Luego, mata ese proceso:

kill -9 PID

Solución menos rápida pero permanente

  1. Ir a /usr/local/bin/ (Puede usar command + shift + g en el buscador)

  2. Crea un archivo con el nombre stop. Pegue el siguiente código en él:

#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop=`(sed '2q;d' temp.text)`
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
rm temp.text
  1. Guarde este archivo.
  2. Hacer que el archivo sea ejecutable chmod 755 stop
  3. Ahora, ve a la terminal y escribe stop 8888(o cualquier puerto)
ronak kothari
fuente
4
Probé la solución permanente pero obtuve 'Permiso denegado' al intentar ejecutar el script. Resuelto por primera ejecución chmod 755 stop.
nomadoda
32

En caso de que la respuesta aceptada anteriormente no funcione, pruebe la siguiente solución. Puede usarlo para el puerto 8080 o para cualquier otro puerto.

sudo lsof -i tcp:3000 

Reemplace 3000 con el puerto que desee. Ejecute el siguiente comando para matar ese proceso.

sudo kill -9 PID

PID es el ID de proceso que desea eliminar.

A continuación se muestra la salida de los comandos en Mac Terminal.

Salida de comando

Akshay Thorve
fuente
1
Intentaría matar regular (no -9) primero. La opción -9 puede provocar que el enchufe no se cierre correctamente. El proceso se puede matar pero otro oyente se bifurcará en su lugar.
stackPusher
6

Para escribir esto:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
  kill -9 $pid
fi

El -targumento hace que la salida de lsof sea "concisa", lo que significa que solo devuelve el PID.

voutasaurus
fuente
1
también puede hacer que funcione eso toma $ port
mebada
Finalmente una solución que obtiene el PID directamente. Gracias hombre, debería ser la respuesta correcta a este hilo
Olympiloutre
3

Necesitaba ejecutar este comando

sudo lsof -i :80 # checks port 8080

Entonces tengo

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
acwebseca 312 root   36u  IPv4 0x34ae935da20560c1      0t0  TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)

muestra qué servicio está usando el PID

ps -ef 312

Entonces tengo esto

  UID   PID  PPID   C STIME   TTY           TIME CMD
    0   312    58   0  9:32PM ??         0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console

Para desinstalar el agente de seguridad web de Cisco, ejecute

sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

créditos a: http://tobyaw.livejournal.com/315396.html

mjabadilla
fuente
2

Puede ser Cisco AnyConnect. Compruebe si existe /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist. Luego descárguelo con launchctl y elimínelo de / Library / LaunchDaemons

Andriy Sylka
fuente
2
sudo lsof -i:8080

Al ejecutar el comando anterior, puede ver cuáles son todos los trabajos en ejecución.

kill -9 <PID Number>

Ingrese el PID (número de identificación del proceso), por lo que esto terminará / eliminará la instancia.

Viswesvar Sekar
fuente
1

También puede usar el Monitor de actividad para identificar y salir del proceso usando el puerto.

gcmori
fuente
1
¿Como podría hacerlo?
Emil Stenström
En MacOSX: Monitor de actividad> Red> ordenar por PID> busque su puerto bloqueado (por ejemplo, 8080, 5000, etc.)> haga clic en la 'X' superior izquierda> confirme que desea salir del proceso. Puede ser una buena idea editar su configuración de ejecución / compilación para garantizar que solo se puedan crear instancias de un solo servidor, es decir, que los puertos usados ​​se liberen al desmontarse.
Alex Friedmann
1

Ejecutar: nmap -p 8080 localhost(Instale nmap con MacPorts o Homebrew si aún no lo tiene en su sistema)

Informe de escaneo de Nmap para localhost (127.0.0.1)

El host está activo (latencia de 0.00034 s).

Otras direcciones para localhost (no escaneadas): :: 1

SERVICIO DE ESTADO PORTUARIO

8080 / tcp abre http-proxy

Correr: ps -ef | grep http-proxy

UID PID PPID C STIME TTY TIME CMD

640 99335 88310 0 12:26 pm ttys002 0: 00.01 grep http-proxy "

Ejecutar: ps -ef 640(reemplace 501 con su UID)

/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd

El puerto 8080 en mac osx es usado por algo instalado con XCode SDK

Yiling
fuente
1

Utilice el siguiente comando:

lsof -n -i4TCP:8080 | awk '{print$2}' | xargs kill -9

El ID de proceso del puerto 8080 se seleccionará y eliminará con fuerza kill -9.

Suniti
fuente
0

prueba netstat

netstat -vanp tcp | grep 3000

si su netstat no es compatible con -p, use lsof

sudo lsof -i tcp:3000 

Para uso de Centos 7

netstat -vanp --tcp | grep 3000
khem raj regmi
fuente