Wir können die Details der System V-Nachrichtenwarteschlange mit Hilfe des ipcs
Befehls überprüfen . Gibt es einen Befehl zum Überprüfen der POSIX-Nachrichtenwarteschlange unter Linux?
Es gibt keinen mir bekannten Befehl, aber es gibt einen libc-Funktionsaufruf, der die Statistiken abrufen kann:
Mann 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 */
};
Wenn Sie das Glück haben, HP-UX zu verwenden , führt der Befehl pipcs
(PDF) das POSIX aus, das dem SysV IPC- ipcs
Befehl entspricht. Leider ist es noch nie für andere Betriebssysteme erschienen. Das aktuelle Util-Linux- Paket (März 2013) ipcs
, in dem POSIX-Warteschlangen kaum erwähnt werden.
Wenn Sie mqueue
gemountet haben /dev/mqueue
, wird lediglich das Lesen der Warteschlange als Datei unterstützt:
user@linux $ cat /dev/mqueue/myQ
QSIZE:0 NOTIFY:0 SIGNO:0 NOTIFY_PID:0
Das QSIZE
ist leider die Größe in Bytes, keine Nachrichten; Unter Linux gibt es (noch) kein Feld für die Anzahl der Nachrichten - im Gegensatz zu FreeBSD , das einen CURMSG
Wert liefert :
user@freebsd $ cat /mnt/mqueue/myQ
QSIZE:0 MAXMSG:32 CURMSG:0 MSGSIZE:1024
Die Antwort sollte also "Mqueue FS einbinden und verwenden cat
" sein, aber es ist nicht :(
(Das Mounten des mqueue FS ist keine Voraussetzung für die Verwendung der MQ-API. Sie können lediglich einige Aufgaben ausführen, bei denen "alles eine Datei ist".)
Wenn Sie Warteschlangen wirklich überwachen müssen, enthält das Buch The Linux Programming Interface den C-Quellcode für verschiedene CLI-Tools zum Erstellen, Überprüfen und Verwenden von Nachrichtenwarteschlangen. Glücklicherweise steht Kapitel 52 des Buches, das dieses Thema behandelt, derzeit kostenlos zum Download zur Verfügung. Siehe pmsg_getattr.c
.
Der kanonische Referenzcode aus Stephens Unix Network Programming (Vol 2) 2nd Ed. (1999) ist hier verfügbar und bietet unter anderem mqgetattr
Informationen, die ebenfalls den Job erledigen (obwohl Sie wahrscheinlich ein paar Zeilen in der obersten Ebene massieren müssen config.h
, stehen die #define
für verschiedene uint
Typen im Widerspruch zu modernen Unix-System-Headern).
Hierfür gibt es auch Ruby- , Perl- und TCL- Module. Das Ruby-Modul wird mit einem posix-mq-rb
CLI-Tool geliefert.
$ ipcs -q
liefert Nachrichtenwarteschlangenstatistiken über die Befehlszeile.$ ipcs -m
stellt Statistiken für gemeinsam genutzten Speicher über die Befehlszeile bereit.$ ipcs
wird alle IPC-Mechanismus-Statistiken bereitstellen.quelle
ipcs
ist nicht für POSIX1-Nachrichtenwarteschlangenipcs
wird für System V-Nachrichtenwarteschlangen und nicht für POSIX-Nachrichtenwarteschlangen verwendet