comando linux per controllare la coda dei messaggi POSIX


13

Possiamo controllare i dettagli della coda dei messaggi del sistema V con l'aiuto del ipcscomando. Esiste un comando per controllare la coda dei messaggi POSIX in Linux?

Risposte:


2

Non esiste un comando che conosco ma esiste una chiamata di funzione libc che può ottenere le statistiche:

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 */
       };

9

Se sei abbastanza fortunato da usare HP-UX , il comando pipcs(PDF) esegue l'equivalente POSIX del ipcscomando IPC SysV . Purtroppo, non è mai apparso per altri sistemi operativi. L'attuale pacchetto util-linux (marzo 2013) che fornisce a ipcsmalapena menzioni mqueues POSIX.

Se hai mqueuemontato /dev/mqueue, ciò che è supportato è semplicemente leggere la coda come file:

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

Il QSIZEè, purtroppo, la dimensione in byte, non messaggi; su Linux non esiste (ancora) un campo di conteggio dei messaggi - a differenza di FreeBSD che fornisce un CURMSGvalore:

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

Quindi la risposta dovrebbe essere "montare il mqueue FS e usare cat", ma non lo è :(

(Montare il mqueue FS non è un prerequisito per l'utilizzo dell'API MQ, ti permette solo di fare alcune cose "tutto è un file".)

Se hai davvero bisogno di monitorare le code, il libro L'interfaccia di programmazione Linux ha il codice sorgente C per vari strumenti della CLI per creare, ispezionare e usare le code dei messaggi. Fortunatamente il capitolo 52 del libro che tratta questo argomento è attualmente disponibile per il download gratuito. Vedere pmsg_getattr.c.

Il codice di riferimento canonico di Stephen's Unix Network Programming (Vol 2) 2nd Ed. (1999) è disponibile qui , fornisce tra le altre cose mqgetattrche farà anche il lavoro (anche se probabilmente dovrai massaggiare un paio di linee al livello più alto config.h, quelle #definedi vari uinttipi sono in conflitto con le intestazioni del sistema Unix contemporaneo).

Ci sono anche moduli Ruby , Perl e TCL per questo, quello Ruby viene fornito con uno posix-mq-rbstrumento CLI.


Uso il sistema Ubuntu ..
sujin

9

$ ipcs -q fornirà le statistiche della coda dei messaggi dalla riga di comando.

$ ipcs -m fornirà le statistiche della memoria condivisa dalla riga di comando.

$ ipcs fornirà tutte le statistiche del meccanismo ipc.


8
ipcsnon è per le code dei messaggi
POSIX1

2
ipcsviene utilizzato per le code dei messaggi di System V e non per le code dei messaggi POSIX
Yerke
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.