POSIXメッセージキューをチェックするlinuxコマンド


13

ipcsコマンドを使用して、システムVメッセージキューの詳細を確認できます。LinuxでPOSIXメッセージキューを確認するコマンドはありますか?

回答:


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を実行します。悲しいことに、それは他のOSのために決して現れませんでした。現在(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を使用するための前提条件ではなく、「すべてがファイルである」ことを可能にするだけです。)

本当にキューを監視する必要がある場合は、 『The Linux Programming Interface』に、メッセージキューを作成、検査、使用するためのさまざまなCLIツール用のCソースコードが含まれています。幸いにも、このトピックをカバーする本の第52章は、現在無料でダウンロードできます。を参照してくださいpmsg_getattr.c

スティーブンのUnixネットワークプログラミング(Vol 2)2nd Edの正規の参照コード(1999)が利用可能である、ここで、それはとりわけ提供し、mqgetattrあまりにも仕事をする(あなたはおそらくトップレベルに数行をマッサージする必要がありますけれどもconfig.h#define様々なためのuint現代的なUnixシステムヘッダを持つタイプの競合)。

RubyPerl、およびTCLモジュールもあり、Rubyにはposix-mq-rbCLIツールが付属しています。


私はUbuntuのシステムを使用して...
sujin

8

$ ipcs -q コマンドラインからメッセージキューの統計を提供します。

$ ipcs -m コマンドラインから共有メモリの統計を提供します。

$ ipcs すべてのIPCメカニズムの統計を提供します。


8
ipcsPOSIX1メッセージキューのためではない
whoan

2
ipcsSystem Vメッセージキューに使用され、POSIXメッセージキューには使用されない
Yerke
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.