Linux

linux命令檢查POSIX消息隊列

  • January 7, 2021

我們可以通過命令查看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 系統標頭檔衝突)。

也有RubyPerlTCL模組,Ruby 帶有一個posix-mq-rbCLI 工具。

$ ipcs -q將從命令行提供消息隊列統計資訊。

$ ipcs -m將從命令行提供共享記憶體統計資訊。

$ ipcs將提供所有 IPC 機制統計資訊。

引用自:https://unix.stackexchange.com/questions/70837