web-dev-qa-db-ja.com

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

私は彼らのpidによって与えられた2つのプロセスを持っています:P1とP2。これらのプロセスがソケットを介して通信しているか、他のプロセス間通信メカニズムを介して通信しているかを確認する簡単な方法はありますか?内部で通信している可能性のある、一見無関係に見える2つのアプリがあるため、これを知る必要があります。これが実際に当てはまるかどうかを知りたいのです。

1
user2183977

lsof -p P1lsof -p P2を使用して、2つのプロセスによって開かれているファイル記述子を確認できます。次に、それぞれが開いているソケットとパイプのリストを見て、それらのいずれかが同じ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と同じであることに注意してください。これは、それらが同じパイプの両端であることを示しています。

1
Barmar