lệnh linux để kiểm tra hàng đợi tin nhắn POSIX


13

Chúng ta có thể kiểm tra các chi tiết của hàng đợi tin nhắn hệ thống V với sự trợ giúp của ipcslệnh. Có lệnh nào để kiểm tra hàng đợi tin nhắn POSIX trong Linux không?

Câu trả lời:


2

Không có lệnh nào tôi biết nhưng có một lệnh gọi hàm libc có thể lấy số liệu thống kê:

người đàn ông 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 */
       };

9

Nếu bạn đủ may mắn để sử dụng HP-UX , lệnh pipcs(PDF) sẽ thực hiện POSIX tương đương với lệnh SysV IPC ipcs. Đáng buồn thay, nó chưa bao giờ xuất hiện cho các hệ điều hành khác. Gói linux-linux hiện tại (tháng 3 năm 2013) cung cấp ipcshầu như không đề cập đến các vấn đề POSIX.

Nếu bạn đã mqueuegắn kết /dev/mqueue, những gì được hỗ trợ chỉ đơn giản là đọc hàng đợi dưới dạng tệp:

user@linux $ cat /dev/mqueue/myQ
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0 

Các QSIZEtiếc là kích thước tính bằng byte, không tin nhắn; trên Linux không có trường đếm tin nhắn - không giống như FreeBSD cung cấp một CURMSGgiá trị:

user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0          MAXMSG:32         CURMSG:0          MSGSIZE:1024   

Vì vậy, câu trả lời phải là "gắn FS mqueue và sử dụng cat", nhưng không phải là :(

(Gắn FS mqueue không phải là điều kiện tiên quyết để sử dụng API MQ, nó chỉ cho phép bạn thực hiện một số nội dung "mọi thứ là một tệp".)

Nếu bạn thực sự cần theo dõi hàng đợi, cuốn sách Giao diện lập trình Linux có mã nguồn C cho các công cụ CLI khác nhau để tạo, kiểm tra và sử dụng hàng đợi tin nhắn. Hạnh phúc chương 52 của cuốn sách bao gồm chủ đề này hiện đang có sẵn miễn phí để tải về. Xem pmsg_getattr.c.

Mã tham chiếu chính tắc từ Lập trình mạng Unix của Stephen (Tập 2) 2nd Ed. (1999) có sẵn ở đây , nó cũng cung cấp một số thứ khác mqgetattrcũng sẽ thực hiện công việc (mặc dù bạn có thể sẽ cần phải xoa bóp một vài dòng ở cấp cao nhất config.h, #defineđối với các uintloại xung đột khác nhau với các tiêu đề hệ thống Unix hiện đại).

Ngoài ra còn có các mô-đun Ruby , PerlTCL cho việc này, Ruby đi kèm với một posix-mq-rbcông cụ CLI.


Tôi đang sử dụng hệ thống Ubuntu ..
sujin

8

$ ipcs -q sẽ cung cấp số liệu thống kê hàng đợi tin nhắn từ dòng lệnh.

$ ipcs -m sẽ cung cấp số liệu thống kê bộ nhớ được chia sẻ từ dòng lệnh.

$ ipcs sẽ cung cấp tất cả các số liệu thống kê cơ chế ipc.


8
ipcskhông dành cho hàng đợi tin nhắn
POSIX1

2
ipcsđược sử dụng cho hàng đợi tin nhắn System V và không cho hàng đợi tin nhắn POSIX
Yerke
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.