Como obter processos atualmente executando semáforos por / proc?

15

Gostaria de saber como obter processos atualmente rodando semáforos em /proc ? Eu acho que é possível pelo subdiretório SysVIPC. Mas eu não sei como usar esses comandos.

Ubuntu 12.10

    
por Hanna 12.05.2013 / 19:47

1 resposta

20

Minha única experiência em lidar com semáforos e memória compartilhada é através do uso do comando ipcs . Dê uma olhada na página de manual do ipcs para mais detalhes.

Este comando mostra quais processos possuem semáforos:

$ ipcs -s

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

Com o semid conhecido, podemos consultar informações de adição sobre os PIDs que possuem semáforos (observe que há 8 - a coluna 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 

A coluna pid são esses processos. Você pode consultá-los usando ps ou consultar o /proc file-system, /proc/<pid> .

Por exemplo:

$ more /proc/2265/cmdline 
mono

POSIX & SystemV

Criando um comentário deixado por @lgeorget, procurei no conteúdo /proc/2265/map do PID 2265 e encontrei as seguintes referências /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
    
por 12.05.2013 / 20:46