Linux - IPCチ​​ャネルを使用してプロセスを確認する

Linux - IPCチ​​ャネルを使用してプロセスを確認する

これは私の移行に関連しています。質問

Linuxシステム(sys V IPCなど)でIPCチャネルに関する統計を見つけることができる場合、どのプロセスが特定のIPCチャネルを使用しているかをどうやって知ることができます(チャネルを介した送信、受信機は通常コマンド出力に記載されています)。

たとえば、ipcsマシンの共有メモリIDのリストを教えてください。この共有メモリを使用しているプロセスをどのように見つけることができますか?

私が興味のある他のIPC(統計を見つけるために使用するコマンドは次のとおりです):

  • 管路:lsof | grep pipe
  • UNIXドメインソケット:netstat -n

ベストアンサー1

を使用することもできipcsますが、追加オプションを追加できます。

wouter@gangtai:~$ ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x0052e2c1 32768      postgres   600        56         20                      
0x00000000 17924097   wouter     600        33554432   2          dest         
0x00000000 49446914   wouter     600        524288     2          dest         
[...]
wouter@gangtai:~$ ipcs -i 17924097 -m -p

Shared memory Segment shmid=17924097
uid=1000    gid=1000    cuid=1000   cgid=1000
mode=01600  access_perms=0600
bytes=33554432  lpid=3808   cpid=1457   nattch=2
att_time=Fri Jul  3 10:43:28 2015  
det_time=Fri Jul  3 10:43:28 2015  
change_time=Fri Jul  3 10:03:00 2015  

lpid「最後の訪問者」PIDはcpid「作成者」PIDです。

この-iパラメータには、確認するIPCオブジェクト(共有メモリセグメント、メッセージキュー、またはセマフォ)のIDが必要です。これ-mは、メモリセグメントを調べて-pプロセスIDを表示することを意味するためです。

全体の内容を確認してくださいman ipcs

おすすめ記事