web-dev-qa-db-ja.com

Linuxで共有メモリセグメントに接続されているプロセスを一覧表示するにはどうすればよいですか?

共有メモリセグメントに接続されているプロセスを確認するにはどうすればよいですか?

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にアタッチされているかをどのように把握できますか?

38
Andrew Wagner

上記の例を考えてください-shmid 98306に接続されているプロセスを見つける

lsof | egrep "98306|COMMAND"
20
chaosless

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
2
jacuro

つかいます ipcs -a:すべてのリソースの詳細情報を提供します[セマフォ、共有メモリなど]

出力のイメージは次のとおりです。

image

0
Darshan Sharma