Linux-Befehl zum Überprüfen der POSIX-Nachrichtenwarteschlange


12

Wir können die Details der System V-Nachrichtenwarteschlange mit Hilfe des ipcsBefehls überprüfen . Gibt es einen Befehl zum Überprüfen der POSIX-Nachrichtenwarteschlange unter Linux?

Antworten:


2

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 */
       };

8

Wenn Sie das Glück haben, HP-UX zu verwenden , führt der Befehl pipcs(PDF) das POSIX aus, das dem SysV IPC- ipcsBefehl 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 mqueuegemountet 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 QSIZEist 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 CURMSGWert 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 mqgetattrInformationen, die ebenfalls den Job erledigen (obwohl Sie wahrscheinlich ein paar Zeilen in der obersten Ebene massieren müssen config.h, stehen die #definefür verschiedene uintTypen 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-rbCLI-Tool geliefert.


Ich benutze Ubuntu-System ..
Sujin

8

$ 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.


8
ipcsist nicht für POSIX1-Nachrichtenwarteschlangen
whoan

1
ipcswird für System V-Nachrichtenwarteschlangen und nicht für POSIX-Nachrichtenwarteschlangen verwendet
Yerke
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.