Para interceptar / analisar o tráfego de rede, temos um utilitário chamado Wireshark .
Temos um utilitário semelhante para interceptar toda a comunicação entre processos entre dois processos no Unix / Linux?
Criei alguns processos na memória e preciso criar um perfil de como eles se comunicam.
command-line
shell
process
ipc
lazer
fonte
fonte
Respostas:
Isso depende muito do mecanismo de comunicação.
No extremo mais transparente do espectro, os processos podem se comunicar usando soquetes da Internet (ou seja, IP ). Então o wireshark ou o tcpdump pode mostrar todo o tráfego apontando-o na interface de loopback.
Em um nível intermediário, o tráfego em tubos e soquetes unix pode ser observado com
truss
/strace
/trace
/ ..., a serra elétrica do exército suíço para rastreamento de sistemas. No entanto, isso pode atrasar significativamente os processos, portanto, pode não ser adequado para criação de perfil.No extremo mais opaco do espectro, há memória compartilhada. O princípio operacional básico da memória compartilhada é que os acessos são completamente transparentes em cada processo envolvido; você só precisa de chamadas do sistema para configurar regiões de memória compartilhada. Rastrear esses acessos à memória a partir do exterior seria difícil, especialmente se você precisar que a observação não perturbe o tempo. Você pode experimentar ferramentas como o kit de ferramentas de rastreamento do Linux (requer um patch do kernel) e verificar se é possível extrair informações úteis; é o tipo de área em que eu esperaria que o Solaris tivesse uma ferramenta melhor (mas não tenho conhecimento dela).
Se você possui a fonte, sua melhor opção pode ser adicionar instruções de rastreamento às funções da biblioteca de chaves. Isso pode ser possível com
LD_PRELOAD
truques, mesmo se você não tiver a fonte (inteira), desde que tenha entendimento suficiente do fluxo de controle da parte do programa que acessa a memória compartilhada.fonte
Isso mostrará o que um processo lê e grava:
Não é uma saída limpa (mostra linhas como: write (#,)), mas funciona! (e é uma linha: D) Você também pode não gostar do fato de que os argumentos são abreviados. Para controlar esse parâmetro, use -s que define o comprimento máximo das strings exibidas.
Ele captura todos os fluxos, então você pode filtrar isso de alguma forma.
Você pode filtrar:
mostra apenas as chamadas do descritor 1. 2> & 1 é redirecionar stderr para stdout, como strace grava no stderr por padrão.
fonte