Risposte:
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 */
};
Se sei abbastanza fortunato da usare HP-UX , il comando pipcs
(PDF) esegue l'equivalente POSIX del ipcs
comando IPC SysV . Purtroppo, non è mai apparso per altri sistemi operativi. L'attuale pacchetto util-linux (marzo 2013) che fornisce a ipcs
malapena menzioni mqueues POSIX.
Se hai mqueue
montato /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 CURMSG
valore:
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 mqgetattr
che farà anche il lavoro (anche se probabilmente dovrai massaggiare un paio di linee al livello più alto config.h
, quelle #define
di vari uint
tipi 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-rb
strumento CLI.
$ 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.
ipcs
non è per le code dei messaggi
ipcs
viene utilizzato per le code dei messaggi di System V e non per le code dei messaggi POSIX