Odpowiedzi:
Nie znam żadnego polecenia, ale istnieje wywołanie funkcji libc, które może uzyskać statystyki:
człowiek 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 */
};
Jeśli masz szczęście korzystać z HP-UX , polecenie pipcs(PDF) wykonuje POSIX równoważne poleceniu SysV IPC ipcs. Niestety, nigdy nie pojawił się w innych systemach operacyjnych. Obecny (marzec 2013) pakiet util-linux , który ipcsledwo wspomina mqueue POSIX.
Jeśli masz mqueuezamontowane /dev/mqueue, obsługiwane jest po prostu odczytanie kolejki jako pliku:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
Jest QSIZEto niestety rozmiar w bajtach, a nie wiadomości; w Linuksie (jak dotąd) nie ma pola zliczania komunikatów - w przeciwieństwie do FreeBSD, który zapewnia CURMSGwartość:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Zatem odpowiedź powinna brzmieć „zamontuj mqueue FS i użyj cat”, ale nie jest to :(
(Montowanie mqueue FS nie jest warunkiem wstępnym korzystania z MQ API, pozwala jedynie na wykonanie pewnych czynności typu „wszystko jest plikiem”).
Jeśli naprawdę potrzebujesz monitorować kolejki, książka Linux Programming Interface ma kod źródłowy C dla różnych narzędzi CLI do tworzenia, sprawdzania i używania kolejek komunikatów. Na szczęście rozdział 52 książki na ten temat jest obecnie dostępny do pobrania za darmo. Zobaczyć pmsg_getattr.c.
Kanoniczny kod odniesienia z Stephen's Unix Network Programming (Vol 2) 2nd Ed. (1999) jest dostępny tutaj , zawiera między innymi to, mqgetattrco również spełni swoje zadanie (chociaż prawdopodobnie będziesz musiał masować kilka linii na najwyższym poziomie config.h, #defineróżne uinttypy konfliktów ze współczesnymi nagłówkami systemu Unix).
Istnieją również moduły Ruby , Perl i TCL , Ruby jest wyposażony w posix-mq-rbnarzędzie CLI.
$ ipcs -q dostarczy statystyki kolejki komunikatów z wiersza poleceń.
$ ipcs -m zapewni statystyki pamięci współdzielonej z wiersza poleceń.
$ ipcs dostarczy wszystkie statystyki mechanizmu ipc.
ipcsnie jest przeznaczony dla kolejek komunikatów
ipcsjest używany w kolejkach komunikatów Systemu V, a nie w kolejkach komunikatów POSIX