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