comando linux para verificar a fila de mensagens POSIX

10

Podemos verificar os detalhes da fila de mensagens do sistema V com a ajuda do comando ipcs . Existe algum comando para verificar a fila de mensagens POSIX no Linux?

    
por sujin 31.03.2013 / 17:33

3 respostas

2

Não há comando que eu saiba, mas existe uma chamada de função libc que pode obter as estatísticas:

man 3 mq_getattr

   mq_getattr() returns an mq_attr structure  in  the  buffer  pointed  by
   attr.  This structure is defined as:

       struct mq_attr {
           long mq_flags;       /* Flags: 0 or O_NONBLOCK */
           long mq_maxmsg;      /* Max. # of messages on queue */
           long mq_msgsize;     /* Max. message size (bytes) */
           long mq_curmsgs;     /* # of messages currently in queue */
       };
    
por 31.03.2013 / 17:58
7

Se você tiver sorte o suficiente para usar HP-UX , o comando pipcs (PDF) executa o equivalente POSIX ao comando SysV IPC ipcs . Infelizmente, nunca apareceu para outros sistemas operacionais. O pacote atual (março de 2013) util-linux que fornece ipcs apenas menciona as linhas do POSIX .

Se você tem mqueue montado em /dev/mqueue , o que é suportado é simplesmente ler a fila como um arquivo:

user@linux $ cat /dev/mqueue/myQ
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0 

O QSIZE é, infelizmente, o tamanho em bytes, não mensagens; no Linux existe (ainda) nenhum campo de contagem de mensagens - ao contrário do FreeBSD que fornece um valor CURMSG :

user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0          MAXMSG:32         CURMSG:0          MSGSIZE:1024   

Então a resposta deve ser "montar o mqueue FS e usar cat ", mas não é: (

(Montar o mqueue FS não é um pré-requisito para usar a API do MQ, apenas permite que você faça algumas coisas "tudo é um arquivo".)

Se você realmente precisa monitorar filas, o livro A Interface de Programação Linux tem o código-fonte C para várias ferramentas CLI para criar, inspecionar e usar filas de mensagens. Felizmente, o capítulo 52 do livro que cobre este tópico está disponível gratuitamente para download. Veja pmsg_getattr.c .

O código de referência canônica da Unix Network Programming (Vol 2) 2nd Ed. de Stephen (1999) está disponível aqui , ele fornece, entre outras coisas, mqgetattr , que também fará o trabalho (embora seja necessário massagear algumas linhas no nível superior config.h , o #define 's para vários uint tipos conflito com cabeçalhos de sistema Unix contemporâneos).

Há também Ruby , Perl e módulos TCL para isso, o Ruby vem com uma ferramenta CLI posix-mq-rb .

    
por 03.04.2013 / 19:19
7

$ ipcs -q fornecerá estatísticas da fila de mensagens a partir da linha de comando.

$ ipcs -m fornecerá estatísticas de memória compartilhada na linha de comando.

$ ipcs fornecerá todas as estatísticas do mecanismo ipc.

    
por 02.06.2014 / 20:12

Tags