linux命令檢查POSIX消息隊列
我們可以通過命令查看system V消息隊列的詳細資訊
ipcs
。是否有任何命令可以檢查 Linux 中的 POSIX 消息隊列?
如果您有幸使用HP-UX,命令
pipcs
(PDF)(抱歉連結已損壞,沒有目前存檔,請參閱unix.com 上的此ipcs
手冊頁)執行與 SysV IPC命令等效的 POSIX。可悲的是,它從未出現在其他作業系統上。目前(2021 年 1 月)提供的 util-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 的先決條件,它只是讓您做一些“一切都是文件”的事情。)
The Linux Programming Interface一書中對消息隊列有很好的介紹,包括用於創建、檢查和使用消息隊列的各種 CLI 工具的 C 原始碼。令人高興的是,本書第 52 章涵蓋了該主題,目前可以免費下載。見
pmsg_getattr.c
。Stephen’s Unix Network Programming (Vol 2) 第 2 版中的規範參考程式碼。(1999) 在這裡可用,它還提供了其他
mqgetattr
可以完成工作的東西(儘管您可能需要在頂層按摩幾行,各種類型config.h
的#define
’suint
與當代 Unix 系統標頭檔衝突)。也有Ruby、Perl和TCL模組,Ruby 帶有一個
posix-mq-rb
CLI 工具。
$ ipcs -q
將從命令行提供消息隊列統計資訊。
$ ipcs -m
將從命令行提供共享記憶體統計資訊。
$ ipcs
將提供所有 IPC 機制統計資訊。