¿Cómo encuentro (y elimino) el proceso que se ejecuta en un puerto determinado? [duplicar]


Respuestas:


47

Podrías usar lsofpara encontrar el proceso:

lsof -t -i:4444

enumeraría solo el pid del proceso escuchando en el puerto 4444. Simplemente podría decir

kill `lsof -t -i:4444`

si fueras valiente


14
+1 para 'si fueras valiente'.
Sr. Shickadance

7

Usted usa lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

La salida será algo así como:

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

Donde la primera columna es el nombre del proceso, y la segunda columna es la identificación del proceso. Luego analiza el resultado, descubre cuál es la identificación del proceso (PID) y usa el killcomando para eliminarlo.


1
Nunca había oído hablar de lsof antes. Mirando la página del manual, parece ser increíblemente útil. ¡Gracias!

todo en linux es un archivo y lsof te permite encontrar archivos así que ... sí, muy útil
jcollum

2

Alternativamente, puede usar netstat -apsi lsofno está disponible en su sistema (ya que no está en un sistema busybox con el que trabajo regularmente).


buena llamada, me preguntaba por qué esto no estaba funcionando en una imagen acoplada derivada de busybox en la que estaba trabajando
jcollum

2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

Utiliza netstat para enumerar los sockets INET de escucha con puertos numéricos y procesos primarios. Filtra la cadena 4444, saca la séptima columna (pid / nombre del proceso) y la divide por "/" para obtener el pid. Pasa eso para matar el comando.


2
Recomiendo contra el kill -9. No permite la limpieza, y es más probable que algunas aplicaciones de Internet tengan recursos que deben cerrarse sin problemas.
Rich Homolka
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.