Como determinar quais portas TCP / UDP estão sendo abertas por um determinado processo (linux)?

3

Eu sei fazer o oposto (descobrir qual processo tem uma determinada porta aberta) usando o lsof ou o netstat, mas pesquisas extensas sobre o Google não me ajudaram a resolver o problema inverso.

Eu sei que eu poderia usar "netstat -np" combinado com alguns grep e sed, mas parece hacky. Existe uma versão invertida de "lsof-i tcp: 80" que mostrará todas as portas locais abertas por um determinado processo?

    
por Alex G 06.09.2012 / 02:00

2 respostas

10

Dê uma olhada na página do manual, você verá que pode usar a opção -p para especificar um id de processo e a opção -i para limitar a exibição a soquetes de domínio da Internet ( -i4 por apenas ipv4 e -i6 para apenas ipv6). Então, se você amarrá-los juntos ...

lsof -p <pid> -i

... você não consegue exatamente o que deseja, porque, por padrão, lsof ou reunirá suas solicitações. Então, adicione o sinalizador -a ( e ) ...

lsof -p <pid> -a -i

... e você obterá uma lista dos sockets IPv4 abertos pelo id do processo especificado.

    
por 06.09.2012 / 02:26
1

I know I could use netstat -np combined with some grep and sed, but it seems hacky.

Que tal isso:

# netstat --inet -nlp | grep <processname>

Is there a reversed version of lsof -i tcp:80 that will show me all the local ports opened by a given process?

# lsof -c <processname> | grep LISTEN
    
por 06.09.2012 / 05:39