Podemos verificar os detalhes da fila de mensagens do sistema V com a ajuda do ipcs
comando Existe algum comando para verificar a fila de mensagens POSIX no Linux?
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 */
};
Se você tiver a sorte de usar o HP-UX , o comando pipcs
(PDF) executará o POSIX equivalente ao ipcs
comando SysV IPC . Infelizmente, ele nunca apareceu para outros sistemas operacionais. O pacote util-linux atual (março de 2013) que fornece ipcs
apenas menciona mueues POSIX.
Se você mqueue
montou /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 CURMSG
valor:
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 mqgetattr
que também fará o trabalho (embora você provavelmente precise massagear algumas linhas no nível superior config.h
, as #define
de vários uint
tipos 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-rb
ferramenta CLI.
$ 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.fonte
ipcs
não é para POSIX1 filas de mensagensipcs
é utilizado para as filas de mensagens System V e não em filas de mensagens POSIX