Nous pouvons vérifier les détails de la file d'attente de messages du système V à l'aide de la ipcs
commande. Existe-t-il une commande pour vérifier la file d'attente de messages POSIX sous Linux?
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 */
};
Si vous avez la chance d'utiliser HP-UX , la commande pipcs
(PDF) exécute l'équivalent POSIX de la ipcs
commande SysV IPC . Malheureusement, il n'est jamais apparu pour d'autres systèmes d'exploitation. Le paquet util-linux actuel (mars 2013) qui fournit à ipcs
peine mentionne les files d'attente POSIX.
Si vous avez mqueue
monté /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 QSIZE
malheureusement 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 CURMSG
valeur:
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 mqgetattr
qui feront le travail aussi (bien que vous ayez probablement besoin de masser quelques lignes au niveau supérieur config.h
, les #define
pour différents uint
types 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-rb
outil CLI.
$ 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.la source
ipcs
n'est pas pour les files d'attente de messages POSIX1ipcs
est utilisé pour les files d'attente de messages System V et non pour les files d'attente de messages POSIX