2 votos

Encontrar los puertos utilizados por un proceso específico en MacOS

Hay decenas de respuestas aquí y en otro lugar sobre cómo encontrar qué proceso está utilizando un puerto específico, pero hasta ahora no he encontrado una mejor manera de encontrar qué puertos están siendo utilizados por un proceso que no sea

lsof -i -P | grep <PID>

que es extremadamente lento (> 5s en mi MacBook Pro de 2021).

Parece que

lsof -p <PID> -i -P

debería filtrar por proceso, pero no lo hace; el -i -P parecen anular las opciones de -p filtro.

¿Qué me falta?

6voto

David Moles Puntos 85

El camino lsof opciones de trabajo es algo contraintuitivo. Según la página de manual (versión de Linux, pero a partir de MacOS 12.2 Monterey y lsof 4.91, la versión para Mac parece ser idéntica):

Normalmente, las opciones de la lista que se indican específicamente son ORed - es decir, especificando el -i sin dirección y la opción -u foo produce un listado de todos los archivos de red O de los archivos que pertenecen a los procesos que pertenecen al usuario "foo".

[...]

El -a puede utilizarse para Y las selecciones. Por ejemplo especificando -a , -U y -u foo produce un listado sólo de UNIX que pertenecen a procesos del usuario "foo".

Para aplicar ambos el -i y el filtro -p por lo que es necesario especificar también -a :

$ lsof -i -P -a -p 46774                                                                                   COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    46774 david   10u  IPv4 0x4e2119e3c90b016b      0t0  TCP *:63597 (LISTEN)
ruby    46774 david   11u  IPv4 0x4e2119e3c90bcbfb      0t0  TCP localhost:63597->localhost:63599 (ESTABLISHED)
ruby    46774 david   14u  IPv4 0x4e2119e3c90c4bfb      0t0  TCP *:3000 (LISTEN)

Tenga en cuenta que cuando el -a se coloca no es importante. Según la página man:

Precaución: el -a hace que todas las opciones de selección de la lista sean AND; no se puede utilizar para causar ANDing de pares seleccionados de opciones de selección colocándola entre ellas, aunque su su colocación es aceptable. Siempre que -a se coloca, provoca el AND de todas las opciones de selección.

Por lo tanto, todo lo siguiente es equivalente.

lsof -i -P -a -p 46774 
lsof -a -p 46774 -i -P
lsof -a -i -p 46774 -P
lsof -P -p 46774 -i -a

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X