ipcs
commandを使用して、システムVメッセージキューの詳細を確認できます。 LinuxでPOSIXメッセージキューを確認するコマンドはありますか?
私が知っているコマンドはありませんが、統計を取得できるlibc関数呼び出しが存在します。
man 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 */
};
$ ipcs -q
は、コマンドラインからメッセージキューの統計情報を提供します。
$ ipcs -m
は、コマンドラインから共有メモリの統計を提供します。
$ ipcs
はすべてのIPCメカニズムの統計を提供します。
HP-UXを使用できる運が良ければ、コマンド pipcs
(PDF) はSysVと同等のPOSIX IPC ipcs
コマンド。残念ながら、他のOSでは表示されていません。現在(2013年3月) til-linux パッケージipcs
を提供するものは、POSIX mqueueについてほとんど言及していません。
mqueue
が/dev/mqueue
にマウントされている場合、サポートされているのは、キューをファイルとして読み取るだけです。
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
QSIZE
は、残念ながらメッセージではなくバイト単位のサイズです。 Linuxでは(まだ)メッセージ数フィールドはありません-CURMSG
値を提供するFreeBSDとは異なります:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
したがって、答えはである必要があります "mount the mqueue FS and use cat
"ですが、そうではありません:(
(mqueueのマウントFSは、MQ APIを使用するための前提条件ではなく、「すべてがファイルである」ことを可能にするだけです。)
本当にキューを監視する必要がある場合、本 The Linux Programming Interface には、作成するさまざまなCLIツールのCソースコードが含まれています、メッセージキューを検査して使用します。幸いにも、このトピックをカバーする本の第52章は、現在無料でダウンロードできます。 pmsg_getattr.c
を参照してください。
スティーブンのUnix Network Programming(Vol 2)2nd Ed。(1999)からの標準的な参照コードが利用可能です here 、それは提供しますとりわけmqgetattr
もこの機能を果たします(ただし、トップレベルconfig.h
の数行をマッサージする必要がありますが、#define
はさまざまなuint
タイプは、現在のUnixシステムヘッダーと競合します)。
Ruby 、 Perl および [〜#〜] tcl [〜#〜] モジュールもあります。Ruby 1つは posix-mq-rb
CLIツールが付属しています。