Kami dapat memeriksa detail antrian pesan sistem V dengan bantuan ipcs
perintah. Apakah ada perintah untuk memeriksa antrian pesan POSIX di Linux?
Tidak ada perintah yang saya tahu tetapi ada panggilan fungsi libc yang bisa mendapatkan statistik:
man 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 */
};
Jika Anda cukup beruntung menggunakan HP-UX , perintah pipcs
(PDF) melakukan POSIX yang setara dengan perintah SysV IPC ipcs
. Sayangnya, tidak pernah muncul untuk OS lain. Paket util-linux saat ini (Maret 2013) yang ipcs
hampir tidak menyebutkan mqueues POSIX.
Jika sudah mqueue
terpasang /dev/mqueue
, yang didukung hanyalah membaca antrian sebagai file:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
The QSIZE
sayangnya ukuran dalam byte, bukan pesan; di Linux belum ada bidang penghitungan pesan - tidak seperti FreeBSD yang memberikan CURMSG
nilai:
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Jadi jawabannya harus "mount FS mqueue dan gunakan cat
", tapi itu tidak :(
(Memasang mqueue FS bukanlah prasyarat untuk menggunakan MQ API, itu hanya memungkinkan Anda melakukan beberapa hal "semuanya adalah file".)
Jika Anda benar-benar perlu memantau antrian, buku The Linux Programming Interface memiliki kode sumber C untuk berbagai alat CLI untuk membuat, memeriksa dan menggunakan antrian pesan. Untungnya bab 52 buku yang membahas topik ini saat ini tersedia gratis untuk diunduh. Lihat pmsg_getattr.c
.
Kode referensi kanonik dari Stephen Unix Network Programming (Vol 2) 2nd Ed. (1999) tersedia di sini , ia menyediakan di antara hal-hal lain mqgetattr
yang akan melakukan pekerjaan juga (meskipun Anda mungkin perlu memijat beberapa baris di tingkat atas config.h
, #define
untuk berbagai uint
jenis konflik dengan header sistem Unix kontemporer).
Ada juga modul Ruby , Perl dan TCL untuk ini, yang Ruby dilengkapi dengan posix-mq-rb
alat CLI.
$ ipcs -q
akan memberikan statistik antrian pesan dari baris perintah.$ ipcs -m
akan memberikan statistik memori bersama dari baris perintah.$ ipcs
akan memberikan semua statistik mekanisme IPC.sumber
ipcs
bukan untuk antrian pesanipcs
digunakan untuk antrian pesan System V dan bukan untuk antrian pesan POSIX