comando de Linux para verificar la cola de mensajes POSIX

13

Podemos verificar los detalles de la cola de mensajes del sistema V con la ayuda del ipcscomando. ¿Hay algún comando para verificar la cola de mensajes POSIX en Linux?

sujin
fuente

Respuestas:

2

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 */
       };
Matthew Ife
fuente
9

Si tiene la suerte de usar HP-UX , el comando pipcs(PDF) realiza el equivalente POSIX al ipcscomando SysV IPC . Lamentablemente, nunca ha aparecido para otros sistemas operativos. El paquete util-linux actual (marzo de 2013) , que ipcsapenas menciona mqueues POSIX.

Si ha mqueuemontado /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 QSIZESentimos 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 CURMSGvalor:

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 mqgetattrque también hará el trabajo (aunque es probable que necesite masajear un par de líneas en el nivel superior config.h, las #definede varios uinttipos 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-rbherramienta CLI.

Sr. púrpura
fuente
Estoy usando el sistema ubuntu ..
sujin
9

$ 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.

joe
fuente
8
ipcsno es para las colas de mensajes POSIX1
whoan
2
ipcsse usa para las colas de mensajes del Sistema V y no para las colas de mensajes POSIX
Yerke