/procで現在実行中のプロセスセマフォを取得するには?

/procで現在実行中のプロセスセマフォを取得するには?

現在セマフォを実行しているプロセスをインポートする方法を知りたいです/proc。 SysVIPCサブディレクトリを介して可能なようです。しかし、このコマンドをどのように使用するのかわかりません。

Ubuntu12.10

答え1

セマフォと共有メモリの私の唯一の経験は、コマンドを使用することですipcs。見てIPCS マニュアルページ詳細については。

このコマンドは、セマフォのあるプロセスを表示します。

$ ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x4d114854 65536      saml       600        8         

semidは既に知られているので、セマフォを使用してPIDに関する追加情報を照会することができます(8 - nsems列があります)。

$ ipcs -s -i 65536

Semaphore Array semid=65536
uid=500  gid=501     cuid=500    cgid=501
mode=0600, access_perms=0600
nsems = 8
otime = Sun May 12 14:44:53 2013  
ctime = Wed May  8 22:12:15 2013  
semnum     value      ncount     zcount     pid       
0          1          0          0          0         
1          1          0          0          0         
2          1          0          0          2265      
3          1          0          0          2265      
4          1          0          0          0         
5          1          0          0          0         
6          1          0          0          4390      
7          1          0          0          4390 

pid列はこれらのプロセスです。ファイルシステムを使用するpsか、それを介して/proc見つけることができます/proc/<pid>

たとえば、

$ more /proc/2265/cmdline 
mono

POSIXとSystemV

/proc/2265/map@lgeorgetさんが投稿したコメントに基づいて、PID 2265の内容を調べてみると、次の/dev/shm参考資料が見つかりました。

$ grep shm /proc/2265/maps 
7fa38e7f6000-7fa38ebdf000 rw-s 00000000 00:11 18517                      /dev/shm/mono-shared-500-shared_fileshare-grinchy-Linux-x86_64-40-12-0
7fa38f0ca000-7fa38f0cb000 rw-s 00000000 00:11 18137                      /dev/shm/mono.2265
7fa3967be000-7fa3967d3000 rw-s 00000000 00:11 18516                      /dev/shm/mono-shared-500-shared_data-grinchy-Linux-x86_64-328-12-0

関連情報