2つのローカルプロセスがソケットまたはipcsを介して通信しているかどうかを確認する方法は?

2つのローカルプロセスがソケットまたはipcsを介して通信しているかどうかを確認する方法は?

P1とP2という2つのプロセスがあります。これらのプロセスがソケットまたは他のプロセス間通信メカニズムを介して通信していることを確認する簡単な方法はありますか?見た目には関係がないように見える2つのアプリケーションが後ろから通信できるため、これを知っておく必要があります。

答え1

両方のプロセスで開かれたファイル記述子を使用して表示lsof -p P1できます。lsof -p P2その後、各開いているソケットとパイプのリストを見て、同じ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

最初のプロセスのパイプ・ターゲットIDは、2番目のプロセスのパイプ・ソースIDと同じです。これは、同じチューブの2つの端であることを示しています。

関連情報