GNU/Linux >> Linux の 問題 >  >> Linux

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

幸運にも HP-UX を使用できる場合 、コマンド pipcs (PDF) (リンク切れ、現在のアーカイブはありません 代わりに、unix.com のこの man ページを参照してください) は、SysV IPC ipcs と同等の POSIX を実行します。 指図。残念ながら、他の OS では登場しませんでした。 ipcs を提供する現在 (2021 年 1 月) の util-linux パッケージ POSIX mqueue についてはほとんど触れていません。

mqueue の場合 /dev/mqueue に搭載 、とは サポートされているのは、既存のキューのメタデータをファイルとして読み取ることです:

[email protected] $ sudo mount -t mqueue mqueue /dev/mqueue
[email protected] $ mq_create -c /myQ
[email protected] $ cat /dev/mqueue/myQ
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0 

QSIZE 残念ながらメッセージではなくバイト単位のサイズです。 Linux には (まだカーネル 5.4 では) メッセージカウントフィールドがありません – FreeBSD とは異なります CURMSG を提供します 値:

[email protected] $ 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 を参照 .

Stephen の Unix Network Programming (Vol 2) 2nd Ed. からの正規参照コード。 (1999) はここから入手でき、とりわけ mqgetattr を提供します。 これも仕事をします(ただし、トップレベルの config.h で数行をマッサージする必要があるでしょう) 、#define さまざまな uint の タイプは現在の Unix システム ヘッダーと競合します)。

このための Ruby、Perl、および TCL モジュールもあります。Ruby には posix-mq-rb が付属しています。 CLI ツール。


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

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

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


私が知っているコマンドはありませんが、統計を取得できる 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 */
       };

Linux
  1. Linuxシステムが32ビットか64ビットかを確認する方法

  2. Linuxmvコマンド

  3. Linuxduコマンド

  1. Linuxipコマンド

  2. Linuxcdコマンド

  3. Linuxでのポートの使用を確認する

  1. LinuxでのDfコマンド(ディスク容量の確認)

  2. LinuxのWコマンド

  3. Linux での logger コマンドの例