Como verificar se dois processos locais estão se comunicando via sockets ou ipcs?

1

Eu tenho dois processos dados por seus pids: P1 e P2. Existe uma maneira simples de verificar se esses processos estão se comunicando via sockets ou outro mecanismo de comunicação entre processos? Preciso saber disso porque tenho dois aplicativos aparentemente não relacionados que podem estar se comunicando de maneira oculta e quero saber se esse é realmente o caso.

    
por user2183977 05.07.2017 / 19:24

1 resposta

1

Você pode usar lsof -p P1 e lsof -p P2 para ver os descritores de arquivos abertos pelos dois processos. Então você pode ver a lista de sockets e pipes que eles abrem, e ver se algum deles tem o mesmo ID.

imac:barmar $ sleep 100 | sleep 100 &
[1] 51885
imac:barmar $ jobs -l
[1]+ 51884 Running                 sleep 100
     51885                       | sleep 100 &
imac:barmar $ lsof -p 51884 | grep -i pipe
sleep   51884 barmar    1   PIPE 0x491a6929f9ea1ca9     16384          ->0x491a6929f9e9fae9
imac:barmar $ lsof -p 51885 | grep -i pipe
sleep   51885 barmar    0   PIPE 0x491a6929f9e9fae9     16384          ->0x491a6929f9ea1ca9

Observe que o ID de destino do canal no primeiro processo é o mesmo que o ID de origem do canal no segundo processo. Isso indica que eles são as duas extremidades do mesmo tubo.

    
por 05.07.2017 / 22:30