linux命令检查POSIX消息队列


13

我们可以在ipcs命令的帮助下检查系统V消息队列的详细信息。在Linux中是否有任何命令可以检查POSIX消息队列?

Answers:


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)执行与SysV IPC ipcs命令等效的POSIX 。可悲的是,它从未出现在其他操作系统上。当前(2013年3月)的util-linux软件包ipcs几乎未提及POSIX mqueue。

如果您已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编程接口》一书提供了用于创建,检查和使用消息队列的各种CLI工具的C源代码。令人高兴的是,本书第52章涵盖了该主题,目前可以免费下载。请参阅pmsg_getattr.c

斯蒂芬的Unix网络编程(第2卷)第二版的规范参考代码(1999年),可在这里,它提供了除其他事项外mqgetattr,将做的工作太多(尽管你可能需要按摩几行的顶层config.h,在#define的各种uint与现代的Unix系统头类型的冲突)。

还有RubyPerlTCL模块,Ruby一个带有posix-mq-rbCLI工具。


我使用Ubuntu系统..
苏金

9

$ ipcs -q 将从命令行提供消息队列统计信息。

$ ipcs -m 将从命令行提供共享内存统计信息。

$ ipcs 将提供所有ipc机制统计信息。


8
ipcs不适用于POSIX1消息队列
whoan,2016年

2
ipcs用于System V消息队列,而不用于POSIX消息队列
Yerke '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.