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?

sawa
fuente
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
Nikhil Mulley
fuente
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

Dom
fuente
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.

Jodie C
fuente