Linux - verifica processos usando canais IPC

2

Isso está relacionado à minha pergunta anterior.

Dado que posso encontrar as estatísticas dos canais IPC no meu sistema Linux (por exemplo, sys V IPC), como posso encontrar quais processos estão usando determinado canal IPC (envio via canal; os receptores são geralmente mencionados nas saídas de comando).

Por exemplo, ipcs me fornece uma lista de mems compartilhados na máquina. Como posso encontrar quais processos estão usando essa memória compartilhada?

Os outros IPCs em que estou interessado (estes são os comandos que usei para encontrar as estatísticas):

  • Canais: lsof | grep pipe
  • Soquetes do domínio UNIX: netstat -n
por Jake 03.07.2015 / 10:20

1 resposta

4

Você também usa ipcs , mas adiciona opções extras:

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 é o PID do "último acessador"; cpid é o PID "criador".

O parâmetro -i precisa do id do objeto IPC (segmento de memória compartilhada, fila de mensagens ou semáforo) que você deseja inspecionar. O sinal -m é porque estamos inspecionando um segmento de memória, e o -p diz que queremos ver os IDs do processo.

Veja man ipcs para a história completa.

    
por 03.07.2015 / 10:50

Tags