команда linux для проверки очереди сообщений POSIX

13

Мы можем проверить детали очереди сообщений системы V с помощью ipcsкоманды. Есть ли какая-нибудь команда для проверки очереди сообщений POSIX в Linux?

Sujin
источник

Ответы:

2

Я не знаю ни одной команды, но существует вызов функции libc, который может получить статистику:

человек 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

Если вам повезло использовать HP-UX , команда pipcs(PDF) выполняет POSIX, эквивалентный команде SysV IPC ipcs. К сожалению, он никогда не появлялся для других ОС. Текущий (март 2013 г.) пакет util-linux , в котором ipcsпочти не упоминаются пометки POSIX.

Если вы mqueueподключены /dev/mqueue, то поддерживается только чтение очереди в виде файла:

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

К QSIZEсожалению, это размер в байтах, а не в сообщениях; в Linux (пока) нет поля подсчета сообщений - в отличие от FreeBSD, которое предоставляет CURMSGзначение:

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

Так что ответом должно быть «смонтировать mqueue FS и использовать cat», но это не так :(

(Монтирование mqueue FS не является обязательным условием для использования MQ API, оно просто позволяет вам делать некоторые вещи «все в файле».)

Если вам действительно нужно отслеживать очереди, книга «Интерфейс программирования Linux» содержит исходный код C для различных инструментов CLI для создания, проверки и использования очередей сообщений. К счастью, глава 52 книги, которая охватывает эту тему, в настоящее время доступна для бесплатной загрузки. См pmsg_getattr.c.

Канонический код ссылки из сетевого программирования Стивена Unix (Том 2) 2-е изд. (1999) доступен здесь , он предоставляет, помимо прочего, mqgetattrчто тоже сделает эту работу (хотя вам, скорее всего, придется помассировать пару строк на верхнем уровне config.h, они #defineдля различных uintтипов конфликтуют с современными заголовками системы Unix).

Для этого есть также модули Ruby , Perl и TCL , в состав Ruby входит posix-mq-rbинструмент CLI.

mr.spuratic
источник
Я использую систему Ubuntu ..
Sujin
9

$ ipcs -q предоставит статистику очереди сообщений из командной строки.

$ ipcs -m предоставит статистику общей памяти из командной строки.

$ ipcs предоставит всю статистику механизма ipc.

Джо
источник
8
ipcsне для очередей сообщений POSIX1
whoan
2
ipcsиспользуется для очередей сообщений System V, а не для очередей сообщений POSIX
Yerke