polecenie linux, aby sprawdzić kolejkę komunikatów POSIX

13

Możemy sprawdzić szczegóły kolejki komunikatów systemu V za pomocą ipcspolecenia. Czy jest jakieś polecenie sprawdzające kolejkę komunikatów POSIX w systemie Linux?

sujin
źródło

Odpowiedzi:

2

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 */
       };
Matthew Ife
źródło
9

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.

pan. spuratic
źródło
Używam systemu ubuntu ..
sujin
9

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

Joe
źródło
8
ipcsnie jest przeznaczony dla kolejek komunikatów
POSIX1
2
ipcsjest używany w kolejkach komunikatów Systemu V, a nie w kolejkach komunikatów POSIX
Yerke