Podemos verificar los detalles de la cola de mensajes del sistema V con la ayuda del ipcs
comando. ¿Hay algún comando para verificar la cola de mensajes POSIX en Linux?
No conozco ningún comando, pero existe una llamada a la función libc que puede obtener las estadísticas:
hombre 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 */
};
Si tiene la suerte de usar HP-UX , el comando pipcs
(PDF) realiza el equivalente POSIX al ipcs
comando SysV IPC . Lamentablemente, nunca ha aparecido para otros sistemas operativos. El paquete util-linux actual (marzo de 2013) , que ipcs
apenas menciona mqueues POSIX.
Si ha mqueue
montado /dev/mqueue
, lo que se admite es simplemente leer la cola como un archivo:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
El QSIZE
Sentimos el tamaño en bytes, no mensajes; en Linux no hay (todavía) un campo de recuento de mensajes, a diferencia de FreeBSD que proporciona un CURMSG
valor:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Entonces, la respuesta debería ser "montar el FS de mqueue y usar cat
", pero no es :(
(El montaje de mqueue FS no es un requisito previo para usar la API de MQ, solo le permite hacer algunas cosas de "todo es un archivo").
Si realmente necesita monitorear las colas, el libro The Linux Programming Interface tiene el código fuente C para varias herramientas CLI para crear, inspeccionar y usar colas de mensajes. Felizmente, el capítulo 52 del libro que cubre este tema está actualmente disponible de forma gratuita para descargar. Ver pmsg_getattr.c
.
El código de referencia canónico de Stephen's Unix Network Programming (Vol 2) 2nd Ed. (1999) está disponible aquí , proporciona, entre otras cosas, lo mqgetattr
que también hará el trabajo (aunque es probable que necesite masajear un par de líneas en el nivel superior config.h
, las #define
de varios uint
tipos entran en conflicto con los encabezados del sistema Unix contemporáneo).
También hay módulos Ruby , Perl y TCL para esto, el Ruby one viene con una posix-mq-rb
herramienta CLI.
$ ipcs -q
proporcionará estadísticas de la cola de mensajes desde la línea de comandos.$ ipcs -m
proporcionará estadísticas de memoria compartida desde la línea de comandos.$ ipcs
proporcionará todas las estadísticas del mecanismo ipc.fuente
ipcs
no es para las colas de mensajes POSIX1ipcs
se usa para las colas de mensajes del Sistema V y no para las colas de mensajes POSIX