共有メモリセグメントに接続されているプロセスを確認するにはどうすればよいですか?
awagner@tree:/home/awagner$ ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 root 777 102400 1
0x00000000 32769 root 774 96 1 dest
0x00000000 98306 awagner 600 393216 2 dest
0x00000000 131075 awagner 600 393216 2 dest
つまり、どの2つのプロセスがshmid 98306にアタッチされているかをどのように把握できますか?
上記の例を考えてください-shmid 98306に接続されているプロセスを見つける
lsof | egrep "98306|COMMAND"
Who_attach_shm.plというツールを作成し、/ proc/[pid]/mapsを解析して情報を取得します。 github からダウンロードできます
サンプル出力:
shm attach process list, group by shm key
##################################################################
0x2d5feab4: /home/curu/mem_dumper /home/curu/playd
0x4e47fc6c: /home/curu/playd
0x77da6cfe: /home/curu/mem_dumper /home/curu/playd /home/curu/scand
##################################################################
process shm usage
##################################################################
/home/curu/mem_dumper [2]: 0x2d5feab4 0x77da6cfe
/home/curu/playd [3]: 0x2d5feab4 0x4e47fc6c 0x77da6cfe
/home/curu/scand [1]: 0x77da6cfe
つかいます ipcs -a
:すべてのリソースの詳細情報を提供します[セマフォ、共有メモリなど]
出力のイメージは次のとおりです。