POSIXメッセージキューを確認するLinuxコマンド

POSIXメッセージキューを確認するLinuxコマンド

コマンドを使用すると、System Vメッセージキューの詳細を表示できますipcs。 LinuxでPOSIXメッセージキューを表示するコマンドはありますか?

答え1

幸運になるとHP-UX、注文するpipcs(PDF)申し訳ありません。リンクが壊れているため、現在アーカイブはありません。、望むよりこれunix.comのマニュアルページ)は、SysV IPCコマンドと同等のPOSIXを実装していますipcs。残念ながら、他のオペレーティングシステムには適用されませんでした。現在(2021年1月)ユーティリティLinux提供されたパッケージにはipcsPOSIX 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#defineuint

しかもルビー真珠そしてTCLRubyには、この目的のためのモジュールが付属しています。posix-mq-rbCLIツール

答え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 */
       };

関連情報