Listar portas em que um PID de processo está escutando (de preferência usando ferramentas iproute2)?

47

Pretendo listar todas as portas que um PID está atualmente escutando.

Como você recomendaria que eu recebesse esse tipo de dados sobre um processo?

    
por ThorSummoner 26.09.2014 / 23:54

5 respostas

40

Você pode usar ss do pacote iproute2 (que é semelhante a netstat ):

ss -l -p -n | grep "pid=1234,"

ou (para a versão anterior do iproute2):

ss -l -p -n | grep ",1234,"

Substitua 1234 pelo PID do programa.

    
por 27.09.2014 / 00:39
44

Não estou ciente de como usar as ferramentas iproute2 . Mas, como solução alternativa, você pode tentar fazer isso.

lsof -Pan -p PID -i

deve fornecer as informações que você está procurando.

Resultado

lsof -Pan -p 27808 -i
COMMAND   PID   USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
httpd   27808 apache    5u  IPv6 112811294      0t0  TCP *:80 (LISTEN)
httpd   27808 apache    7u  IPv6 112811298      0t0  TCP *:8443 (LISTEN)
httpd   27808 apache    9u  IPv6 112811303      0t0  TCP *:443 (LISTEN)

Eu recebi este comando de aqui , mas não tenho certeza do link exato, pois tenho todos anotados no bloco de anotações. Mas você pode dar uma olhada de lá também.

    
por 27.09.2014 / 00:07
13

Você pode usar netstat para descobrir o pid de cada processo de escuta.

netstat - Imprima conexões de rede, tabelas de roteamento, estatísticas de interface, conexões masquerade e associações multicast

-a, --all        Mostrar os conectores de escuta e não escuta (para TCP isto significa conexões estabelecidas). Com a opção --interfaces, mostre as interfaces que não estão marcadas

- numérico, -n        Mostrar endereços numéricos em vez de tentar determinar nomes de host, porta ou usuário simbólicos.

-p, --programa        Mostrar o PID e o nome do programa ao qual cada soquete pertence.

Aqui está um exemplo:

# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1507/rpcbind
tcp        0      0 0.0.0.0:51188               0.0.0.0:*                   LISTEN      1651/rpc.statd
tcp        0      0 0.0.0.0:1013                0.0.0.0:*                   LISTEN      1680/ypbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1975/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1763/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2081/master
tcp        0      0 127.0.0.1:27017             0.0.0.0:*                   LISTEN      2119/mongod
tcp        0     48 172.16.33.73:22             172.16.127.110:51850        ESTABLISHED 25473/sshd
tcp        0      0 172.16.33.73:22             172.16.127.110:51214        ESTABLISHED 24699/sshd
tcp        0      0 :::111                      :::*                        LISTEN      1507/rpcbind
tcp        0      0 :::9200                     :::*                        LISTEN      1994/java
tcp        0      0 :::9300                     :::*                        LISTEN      1994/java
tcp        0      0 :::22                       :::*                        LISTEN      1975/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1763/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2081/master
tcp        0      0 :::59162                    :::*                        LISTEN      1651/rpc.statd
    
por 27.09.2014 / 00:42
10

A resposta do @jofel mostra a ferramenta apropriada para usar, ss , aqui estão as substituições para o outro ferramentas de rede no iproute2.

Os comandos reprovados e seus equivalentes iproute2 são os seguintes:

deprecated      replacement(s)
==========      ==============
- arp           ip n (ip neighbor)
- ifconfig      ip a (ip addr), ip link, ip -s (ip -stats)
- iptunnel      ip tunnel
- iwconfig      iw
- nameif        ip link, ifrename
- netstat       ss, ip route (for netstat-r), ip -s link (for netstat -i), 
                ip maddr (for netstat-g)

- route         ip r (ip route)

A lista básica também está na Wikipedia: link .

Referências

por 27.09.2014 / 00:51
1

Outro método para lsof se você não conhece o PID, mas apenas o nome do Programa:

lsof -Pa -p $(pgrep [programName]) -i
    
por 28.09.2016 / 05:59