コマンドを使用すると、System Vメッセージキューの詳細を表示できますipcs
。 LinuxでPOSIXメッセージキューを表示するコマンドはありますか?
答え1
幸運になるとHP-UX、注文するpipcs
(PDF)(申し訳ありません。リンクが壊れているため、現在アーカイブはありません。、望むよりこれunix.comのマニュアルページ)は、SysV IPCコマンドと同等のPOSIXを実装していますipcs
。残念ながら、他のオペレーティングシステムには適用されませんでした。現在(2021年1月)ユーティリティLinux提供されたパッケージにはipcs
POSIX mqueueはほとんど記載されていません。
mqueue
インストールしたら/dev/mqueue
どうですか?はい既存のキューのメタデータをファイルに読み込むサポート:
user@linux $ sudo mount -t mqueue mqueue /dev/mqueue
user@linux $ mq_create -c /myQ
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
残念ながら、これはQSIZE
メッセージサイズではなくバイト単位のサイズにすぎません。 Linux(現在のカーネル5.4)にはメッセージ数フィールドはありません。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
。
Stephenの標準参照コードUnixネットワークプログラミング(2巻)第2版。(1999) 利用可能ここ他の機能も提供します(さまざまな種類のヘッダーが最新のUnixシステムと競合するため、最上位レベルで数行を変更する必要がmqgetattr
あるかもしれません)。config.h
#define
uint
しかもルビー、真珠そしてTCLRubyには、この目的のためのモジュールが付属しています。posix-mq-rb
CLIツール
答え2
$ ipcs -q
メッセージキュー統計はコマンドラインから提供されます。
$ ipcs -m
共有メモリ統計はコマンドラインから提供されます。
$ ipcs
すべてのIPCメカニズム統計が提供されます。
答え3
どのコマンドもわかりませんが、統計を取得できる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 */
};