POSIX 메시지 대기열을 확인하기위한 linux 명령


13

ipcs명령을 사용하여 시스템 V 메시지 큐의 세부 사항을 확인할 수 있습니다 . Linux에서 POSIX 메시지 대기열을 확인하는 명령이 있습니까?

답변:


2

내가 아는 명령은 없지만 통계를 얻을 수있는 libc 함수 호출이 있습니다.

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

9

운이 좋으면 HP-UX 를 사용 하면 명령 pipcs(PDF) 은 SysV IPC ipcs명령 과 동등한 POSIX를 수행합니다 . 안타깝게도 다른 OS에는 나타나지 않았습니다. POSIX mqueue를 거의 언급하지 않는 현재 (2013 년 3 월) util-linux 패키지 ipcs.

mqueue마운트 한 경우 /dev/mqueue지원되는 것은 단순히 큐를 파일로 읽는 것입니다.

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

QSIZE불행하게도 바이트가 아닌 메시지의 크기; Linux에는 값 을 제공하는 FreeBSD 와 달리 아직 메시지 수 필드가 없습니다 CURMSG.

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

따라서 대답 "mqueue FS를 마운트하고 사용 cat"해야하지만 그렇지 않습니다.

mqueue FS를 마운트하는 것은 MQ API를 사용하기위한 전제 조건이 아니며 "모든 것이 파일"인 작업 만 수행 할 수 있습니다.

큐를 실제로 모니터해야하는 경우 Linux Programming Interface 책 에는 메시지 큐를 작성, 검사 및 사용하기위한 다양한 CLI 도구에 대한 C 소스 코드가 있습니다. 이 주제를 다루는이 책의 52 장은 현재 무료로 다운로드 할 수 있습니다. 참조하십시오 pmsg_getattr.c.

Stephen의 Unix Network Programming (Vol 2) 2nd Ed. 의 표준 참조 코드 (1999)는 여기 에서 사용할 수 있으며 , mqgetattr작업을 수행하는 다른 것들도 제공합니다 (최상의 레벨에서 두 줄을 마사지해야하지만 config.h, #define다양한 uint유형 의 경우 현대 유닉스 시스템 헤더와 충돌합니다).

도 있습니다 루비 , TCL 이에 대한 모듈, 루비 하나가되어 posix-mq-rbCLI 도구입니다.


우분투 시스템을 사용하고 있습니다.
sujin

9

$ ipcs -q 명령 행에서 메시지 큐 통계를 제공합니다.

$ ipcs -m 명령 줄에서 공유 메모리 통계를 제공합니다.

$ ipcs 모든 ipc 메커니즘 통계를 제공합니다.


8
ipcs는 POSIX1 메시지 대기열이 아닙니다
whoan

2
ipcsPOSIX 메시지 대기열이 아닌 System V 메시지 대기열에 사용됩니다.
Yerke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.