commande linux pour vérifier la file d'attente de messages POSIX

13

Nous pouvons vérifier les détails de la file d'attente de messages du système V à l'aide de la ipcscommande. Existe-t-il une commande pour vérifier la file d'attente de messages POSIX sous Linux?

sujin
la source

Réponses:

2

Il n'y a aucune commande que je connaisse mais il existe un appel de fonction libc qui peut obtenir les statistiques:

homme 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 */
       };
Matthew Ife
la source
9

Si vous avez la chance d'utiliser HP-UX , la commande pipcs(PDF) exécute l'équivalent POSIX de la ipcscommande SysV IPC . Malheureusement, il n'est jamais apparu pour d'autres systèmes d'exploitation. Le paquet util-linux actuel (mars 2013) qui fournit à ipcspeine mentionne les files d'attente POSIX.

Si vous avez mqueuemonté /dev/mqueue, ce qui est pris en charge est simplement de lire la file d'attente sous forme de fichier:

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

C'est QSIZEmalheureusement la taille en octets, pas les messages; sous Linux il n'y a pas (encore) de champ de comptage de messages - contrairement à FreeBSD qui fournit une CURMSGvaleur:

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

La réponse devrait donc être "monter la mqueue FS et l'utiliser cat", mais ce n'est pas :(

(Le montage de la mqueue FS n'est pas une condition préalable à l'utilisation de l'API MQ, il vous permet simplement de faire des choses "tout est un fichier".)

Si vous avez vraiment besoin de surveiller les files d'attente, le livre The Linux Programming Interface contient le code source C de divers outils CLI pour créer, inspecter et utiliser des files d'attente de messages. Heureusement, le chapitre 52 du livre qui couvre ce sujet est actuellement disponible en téléchargement gratuit. Tu vois pmsg_getattr.c.

Le code canonique de référence de Stephen's Unix Network Programming (Vol 2) 2nd Ed. (1999) est disponible ici , il fournit entre autres choses mqgetattrqui feront le travail aussi (bien que vous ayez probablement besoin de masser quelques lignes au niveau supérieur config.h, les #definepour différents uinttypes entrent en conflit avec les en-têtes du système Unix contemporain).

Il existe également des modules Ruby , Perl et TCL pour cela, celui de Ruby est livré avec un posix-mq-rboutil CLI.

Mr Spuratic
la source
J'utilise le système Ubuntu ..
sujin
9

$ ipcs -q fournira des statistiques de file d'attente de messages à partir de la ligne de commande.

$ ipcs -m fournira des statistiques de mémoire partagée à partir de la ligne de commande.

$ ipcs fournira toutes les statistiques du mécanisme ipc.

Joe
la source
8
ipcsn'est pas pour les files d'attente de messages POSIX1
whoan
2
ipcsest utilisé pour les files d'attente de messages System V et non pour les files d'attente de messages POSIX
Yerke