![Como monitorar continuamente os PIDs conectados a soquetes locais?](https://rvso.com/image/168802/Como%20monitorar%20continuamente%20os%20PIDs%20conectados%20a%20soquetes%20locais%3F.png)
Algunsprocessos locaisestão conectando e desconectando 127.0.0.1 na porta 1234.
Gostaria de registrar todas as conexões nesta porta (ou no processo do servidor).
eu tentei
ss -tpn | grep 1234
Mostra uma lista, mas depois para; Ele não registra novas conexões, então não consigo capturar os soquetes nem o PID do proprietário.
Que ferramenta posso usar para descobrir o PID das tomadas de conexão e desconexão?
Responder1
existe uma ferramenta de "observação" que faz isso, ou você pode
while true; do sleep 2; clear; ss -tulnp | grep 1234 ; done
anexar o código a um arquivo e acompanhá-lo. o que provavelmente gerará uso da CPU, mas pode ajudá-lo com o que você está procurando.
Comando de observação do Linux
Responder2
Existem duas ferramentas que você pode usar para monitorar connect
eventos TCP no Linux:
- tcpconnect.pyem ferramentas Cco (pkgs.org,repologia)
- tcpconnect.btem bpftrace (pkgs.org,repologia)
A diferença entre os dois é que o primeiro oferece opções para personalizar a saída (por exemplo, filtragem por PID ou número de porta), enquanto o último é uma ferramenta mais simplista e não oferece opções sofisticadas.
Para o seu caso de uso, a opção mais simples seria instalar o Cco e executar:
tcpconnect.py -P 1234
Se você instalar essas ferramentas usando o gerenciador de pacotes da sua distribuição, lembre-se de que algumas distros não as colocam tcpconnect
em /usr/bin
outro lugar /usr/share
. Portanto, certifique-se de verificar onde sua distribuição coloca esses arquivos, caso não consiga encontrá-los.
Responder3
Embora ss
apenas faça dump de estatísticas de soquete, e você precisaria simular dumps contínuos (com watch
ou em while
loop), netstat
possui um modo contínuo ( -c
).
netstat -ntcp | grep ' 127.0.0.1:1234'
Observe os dois espaços antes de 127... não é um erro de digitação, se você precisar capturar apenas o pid do cliente.
Exemplo de saída:
$ netstat -ntcp | grep ' 127.0.0.1:1234'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:35720 127.0.0.1:1234 ESTABLISHED 22655/nc
tcp 0 0 127.0.0.1:50146 127.0.0.1:1234 ESTABLISHED 21274/nc
Responder4
watch -n 1 -d 'lsof -n -itcp:1234'
não registro, mas monitoramento poderoso em tempo real com destaques...
$ man watch
- -n 1 - a cada 1 segundo
- -d - Destaque as diferenças
$ man lsof
- -n - não resolve ips para domínios.
- -itcp:1234 - qualquer interage com a porta tcp 1234