web-dev-qa-db-fra.com

Commande Linux pour vérifier la file d'attente de message POSIX

Nous pouvons vérifier les détails de la file d'attente de messages System V à l'aide de ipcscommand. Y a-t-il une commande pour vérifier la file d'attente de message POSIX à Linux?

13
sujin

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

Man 3 mq_getaTatr

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

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

$ ipcs -m fournira des statistiques de mémoire partagées de la ligne de commande.

$ ipcs fournira toutes les statistiques de mécanisme IPC.

9
joe

Si vous êtes assez chanceux d'utiliser HP-UX , la commande pipcs (pdf) Effectue la POSIX équivalent au SYSV IPC ipcs commande. Malheureusement, il n'est jamais apparu pour d'autres systèmes d'exploitation. Le package actuel (mars 2013) til-linux paquet qui fournit ipcs _ à peine mentionne POSIX MQUESUES.

Si vous avez mqueue monté sur /dev/mqueue, ce qui est pris en charge lit simplement la file d'attente en tant que fichier:

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

Le QSIZE est malheureusement la taille des octets, pas des messages; Sur Linux, il n'y a pas encore de champ Nombre de messages - Contrairement à FreeBSD qui fournit une valeur CURMSG:

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

Donc la réponse devrait être "Montez la monteuse FS et utilisez cat", mais ce n'est pas :(

(Montage du MQUE FS N'EST PAS une condition préalable à l'utilisation de l'API MQ, il vous permet de faire "tout est un fichier".)

Si vous avez vraiment besoin de surveiller les files d'attente, le livre ( L'interface de programmation Linux Le code source C pour divers outils CLI pour créer , inspectez et utilisez des files d'attente de messages. Heureusement, le chapitre 52 du livre qui couvre ce sujet est actuellement disponible gratuitement au téléchargement. Voir pmsg_getattr.c.

Le code de référence canonique de Stephen's Programmation réseau Unix (Vol 2) 2e Ed. (1999) est disponible ici , il fournit Parmi d'autres choses mqgetattr qui fera le travail aussi (bien que vous aurez probablement besoin de masser quelques lignes dans le haut niveau config.h, les #define 's pour diverses uint Types sont en conflit avec des en-têtes de système Unix contemporain).

Il y a aussi ruby , Perl et [~ # ~] tcl [~ # ~ ~] modules pour cela, le Ruby On vient avec A posix-mq-rb outil CLI.

9
mr.spuratic