Eu estou olhando para listar todas as portas que um PID está escutando.
Como você recomendaria que eu obtivesse esse tipo de dados sobre um processo?
Eu estou olhando para listar todas as portas que um PID está escutando.
Como você recomendaria que eu obtivesse esse tipo de dados sobre um processo?
Respostas:
Você pode usar ss
o pacote iproute2 (que é semelhante a netstat
):
ss -l -p -n | grep "pid=1234,"
ou (para a versão mais antiga do iproute2):
ss -l -p -n | grep ",1234,"
Substitua 1234 pelo PID do programa.
-u
ou apenas -t
para udb ou tcp. : +1: E tudo isso pode ser empilhado da seguinte forma ss -tlnp
ss -tlnp | cat
ss -nlp | cat
, isso é aproximadamente, me mostrar os processos de escuta (-l), seus números de porta (-n) e suas informações de processo (-p), e não tente ajustar a saída ao meu shell | cat
( ou menos ou o que for). Só me levou dois anos para se acostumar com isso: D
Não conheço uma maneira de usar iproute2
ferramentas. Mas, como alternativa, você pode tentar este.
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 esse comando a partir daqui, mas não tenho certeza do link exato, pois todos eles foram anotados no caderno. Mas você pode conferir a partir daí também.
Você pode usar netstat
isso para descobrir pid de cada processo de escuta.
netstat - Imprima conexões de rede, tabelas de roteamento, estatísticas de interface, conexões mascaradas e associações multicast
-a, --all Mostra os soquetes de escuta e não escuta (para TCP, isso significa conexões estabelecidas). Com a opção --interfaces, mostre interfaces que não estão marcadas
--numeric, -n Mostra endereços numéricos em vez de tentar determinar nomes simbólicos de host, porta ou usuário.
-p, --program Mostra 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
netstat
foi preterido pelas ferramentas do iproute2 e pretendo evitá-lo.
A resposta do @ jofel mostra a ferramenta apropriada para usar ss
, aqui estão as substituições das outras ferramentas de rede do iproute2.
Os comandos descontinuados 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á aqui na Wikipedia: http://en.wikipedia.org/wiki/Iproute2 .
Outro método para lsof
se você não conhece o PID, mas apenas o nome do Programa:
lsof -Pa -p $(pgrep [programName]) -i
lsof
4.89 no ubuntu 16.04
pgrep <program name>
depois escolha o PID necessário para o comando acima. substituindo $(pgrep [programName])
pelo PID #
ss
não ter filtragem no PID, exceto nos soquetes netlink.