lsof não mostrando em qual porta um proc está escutando

1

Eu tenho muitos processos em uma caixa ouvindo em várias portas.
Eu estou tentando mapear portas para pids.
O problema é que o lsof não está me dizendo quais portas pertencem a qual processo.

Dado um apache escutando na porta 80, posso vê-lo ouvindo via netstat:
user@host% netstat -an|grep LISTEN|grep 80
*.80 *.* 0 0 49152 0 LISTEN

Mas quando eu tento mapear a porta 80 para um pid eu não recebo nada:
user@host% lsof -iTCP:80 -t

Quando tento ver quais soquetes estão usando o pid específico, recebo:
user@host% lsof -lnP -p31 -a -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME e libhttpd. 31 0 15u IPv4 0x6002d970b80 0t0 TCP *:65535 (LISTEN)

Observe o *: 65535 na coluna NAME.

Alguém sabe por que o lsof não está reportando a porta em uso?

Estou correndo como root. Estou usando uma mistura de versões lsof e os:
lsof v4.77 no Solaris10 sparc
lsof v4.72 em Redhat4.2
etc

Eu sei que as soluções linux podem usar "netstat -p",
então eu acho que estou apenas procurando por que a solaris não está funcionando, mas eu acho que o lsof é frequentemente silencioso e não mostra os dados esperados.

    
por ericslaw 17.03.2010 / 20:54

1 resposta

2

Você prefere usar o pfiles, que faz parte do Solaris e é suportado pela Sun, ao contrário do lsof.

Seu uso é um pouco diferente, pois espera um pid como argumento, mas você pode conseguir o que deseja com algo como:

pfiles $(pgrep libhttpd)

ou até mesmo, se você não souber o nome do processo:

pfiles /proc/*  
    
por 17.03.2010 / 22:09