Alternativas más rápidas a lsof


8

Quiero extraer la identificación del proceso de un determinado proceso para cerrarlo. El proceso es un servidor web local que usa un cierto puerto (localhost: 3000), y actualmente lo estoy haciendo así para extraer la línea relevante:

lsof|grep localhost:3000

Pero el lsofcomando es demasiado lento. ¿Hay alguna forma más rápida de extraer la identificación del proceso?


lsof -ienumere solo las conexiones de red.
Hanan N.

@HananN. Lo intenté, pero aún es muy lento. Usar netstat como se sugiere en las respuestas es mucho más rápido.
Sawa

2
lsofno es la parte lenta, usar todas las resoluciones de nombre y la resolución de ip es. Haz que todo sea numérico e irá rápido.
Marcin

@Marcin Su información fue realmente útil tanto como las respuestas dadas. Gracias.
Sawa

¿Hay alguna razón por la que puedes t use matar pgrepo pkill?
Nils

Respuestas:


7

Prueba netstat, sin embargo, no puedo decir si es más rápido o más lento.

netstat -tanp | awk '$4 ~ /:8443$/ {sub(/\/.*/, "", $7); print $7}' | sort -u

1
Entiendo que use la opción -p, Linux requiere que sea un usuario root.
Nikhil Mulley

1
Definitivamente es más rápido ya que netstat solo enumera las conexiones de red (y no todos los archivos abiertos)
Matteo

Gracias por la respuesta rápida y precisa. Me ayudo mucho
Sawa

11

Puede poner una opción -n en lsof y luego eliminar la resolución DNS, lo que puede acelerar la visualización


Sí, eso parece resolver el problema, y ​​es útil. Fue sugerido en parte por Marcin en un comentario a mi respuesta.
sawa

1
El tiempo reportado es de 10 segundos, independientemente de la opción n.
user1133275

2
sudo ss -p -l '( sport = :3000 )'|awk -F"," 'NR!=1{print $2}'

Esto imprimirá el PID del proceso escuchando en 3000

time informa que esto se completó en 0m0.018s.

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.