GNU/Linux >> Linux Esercitazione >  >> Linux

comando linux per controllare la coda dei messaggi POSIX

Se sei abbastanza fortunato da usare HP-UX , il comando pipcs (PDF) (scusate collegamento interrotto, nessun archivio corrente , vedere invece questa pagina man su unix.com) esegue l'equivalente POSIX dell'IPC SysV ipcs comando. Purtroppo, non è mai apparso per altri sistemi operativi. L'attuale (gennaio 2021) pacchetto util-linux che fornisce ipcs menziona a malapena le code POSIX.

Se hai mqueue montato su /dev/mqueue , cos'è è supportato sta leggendo i metadati per una coda esistente come file:

[email protected] $ sudo mount -t mqueue mqueue /dev/mqueue
[email protected] $ mq_create -c /myQ
[email protected] $ cat /dev/mqueue/myQ
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0 

Il QSIZE purtroppo è solo la dimensione in byte, non i messaggi; su Linux non c'è (per ora, kernel 5.4) nessun campo per il conteggio dei messaggi, a differenza di FreeBSD che fornisce un CURMSG valore:

[email protected] $ cat /mnt/mqueue/myQ
QSIZE:0          MAXMSG:32         CURMSG:0          MSGSIZE:1024   

Quindi la risposta dovrebbe be "monta mqueue FS e usa cat ", ma non è :(

(Il montaggio di mqueue FS non è un prerequisito per l'utilizzo dell'API MQ, ti consente solo di fare alcune cose "tutto è un file".)

C'è una buona copertura delle code di messaggi nel libro The Linux Programming Interface , incluso il codice sorgente C per vari strumenti CLI per creare, ispezionare e utilizzare le code dei messaggi. Fortunatamente il capitolo 52 del libro che tratta questo argomento è attualmente disponibile per il download gratuito. Vedi pmsg_getattr.c .

Il codice di riferimento canonico da Unix Network Programming (Vol 2) 2nd Ed. di Stephen (1999) è disponibile qui, fornisce tra l'altro mqgetattr che farà anche il lavoro (anche se probabilmente dovrai massaggiare un paio di righe nel config.h di livello superiore , il #define 's per vari uint i tipi sono in conflitto con le intestazioni di sistema Unix contemporanee).

Ci sono anche moduli Ruby, Perl e TCL per questo, quello Ruby ha un posix-mq-rb strumento CLI.


$ ipcs -q fornirà le statistiche sulla coda dei messaggi dalla riga di comando.

$ ipcs -m fornirà statistiche sulla memoria condivisa dalla riga di comando.

$ ipcs fornirà tutte le statistiche del meccanismo ipc.


Non conosco alcun comando ma esiste una chiamata di funzione libc che può ottenere le statistiche:

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

Linux
  1. Come verificare se un sistema Linux è a 32 o 64 bit

  2. Comando Linux mv

  3. Linux du comando

  4. comando IP Linux

  5. comando cd di Linux

Come controllare la cronologia dei comandi di Linux in base alle date

3 modi per controllare la versione del kernel Linux nella riga di comando

Come controllare la velocità di Internet in Linux

Come usare il comando wall in linux

Come controllare le porte aperte in Linux?

Comando Linux df per controllare lo spazio su disco