Qué utilizar como alternativa "fuser -v -n tcp" en Mac OS X

10

El comando del fusor en Mac OS X es bastante primitivo y no puede verificar los procesos que escuchan en un puerto específico. ¿Alguien sabe una buena alternativa? Es suficiente saber qué proceso escucha en ese puerto.

Martín
fuente
1
Probarsudo lsof -i -P
vcsjones
Tenía la impresión de que lsof` solo funciona cuando una tarea realmente se conecta al puerto. Además, uno necesitaría al menos un | grep portnotambién para obtener un resultado significativo.
Martin

Respuestas:

14

Como @vcsjones dijo en los comentarios, lsofes la herramienta para esto:

$ sudo lsof -i tcp:80
COMMAND PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
Safari  804 gordon   16u  IPv4 0x05a2cec8      0t0  TCP 192.168.6.3:50542->stackoverflow.com:http (ESTABLISHED)
httpd   874   root    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)
httpd   878   _www    3u  IPv6 0x05a2a940      0t0  TCP *:http (LISTEN)

Sin el -i, muestra todos los archivos abiertos; con solo -imuestra solo archivos de red; si especifica algo después de -ilo cual puede restringir cualquiera o todos: IPv4 / 6, TCP / UDP, nombre de host o IP, y número de puerto / nombre de servicio.

Gordon Davisson
fuente
2
En caso de que sea útil para alguien como yo que busca matar ciegamente todos los procesos usando un puerto dado: lsof -i tcp:5000 | grep LISTEN | awk '{print $2}' | xargs killmata todos los procesos que escuchan en el puerto 5000
JeremyKun