comando linux para verificar a fila de mensagens POSIX

13

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

sujin
fonte

Respostas:

2

Não existe nenhum comando que eu conheça, 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 */
       };
Matthew Ife
fonte
9

Se você tiver a sorte de usar o HP-UX , o comando pipcs(PDF) executará o POSIX equivalente ao ipcscomando SysV IPC . Infelizmente, ele nunca apareceu para outros sistemas operacionais. O pacote util-linux atual (março de 2013) que fornece ipcsapenas menciona mueues POSIX.

Se você mqueuemontou /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 

A QSIZEé, infelizmente, o tamanho em bytes, não mensagens; no Linux não há (ainda) nenhum campo de contagem de mensagens - diferente do FreeBSD, que fornece um CURMSGvalor:

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

Portanto, 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 fazer algumas coisas "tudo é um arquivo".)

Se você realmente precisa monitorar filas, o livro The Linux Programming Interface possui o código fonte C para várias ferramentas da CLI para criar, inspecionar e usar filas de mensagens. Felizmente, o capítulo 52 do livro, que aborda esse tópico, está disponível gratuitamente para download no momento. Veja pmsg_getattr.c.

O código de referência canônico da Stephen's Unix Network Programming (Vol. 2) 2nd Ed. (1999) está disponível aqui , ele fornece, entre outras coisas, o mqgetattrque também fará o trabalho (embora você provavelmente precise massagear algumas linhas no nível superior config.h, as #definede vários uinttipos entram em conflito com os cabeçalhos do sistema Unix contemporâneo).

Existem também módulos Ruby , Perl e TCL para isso, o Ruby vem com uma posix-mq-rbferramenta CLI.

mr.spuratic
fonte
Eu estou usando o sistema ubuntu ..
sujin 15/04
8

$ ipcs -q fornecerá estatísticas da fila de mensagens na linha de comandos.

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

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

Joe
fonte
8
ipcsnão é para POSIX1 filas de mensagens
whoan
2
ipcsé utilizado para as filas de mensagens System V e não em filas de mensagens POSIX
Yerke