POSIX 메시지 큐를 확인하는 Linux 명령

POSIX 메시지 큐를 확인하는 Linux 명령

명령을 통해 System V 메시지 대기열의 세부 정보를 볼 수 있습니다 ipcs. Linux에서 POSIX 메시지 대기열을 보는 명령이 있습니까?

답변1

운좋게 사용하게 된다면HP-UX, 주문하다pipcs(PDF)(죄송합니다. 링크가 깨져서 현재 보관 파일이 없습니다., 바라보다이것unix.com의 매뉴얼 페이지)는 SysV IPC 명령과 동등한 POSIX를 구현합니다 ipcs. 안타깝게도 다른 운영 체제에는 적용되지 않았습니다. 현재(2021년 1월)유틸리티Linux제공된 패키지에는 ipcsPOSIX mqueue가 거의 언급되어 있지 않습니다.

mqueue설치 했다면 /dev/mqueue어떡하지?기존 대기열의 메타데이터를 파일로 읽기 지원:

user@linux $ sudo mount -t mqueue mqueue /dev/mqueue
user@linux $ mq_create -c /myQ
user@linux $ cat /dev/mqueue/myQ
QSIZE:0          NOTIFY:0     SIGNO:0     NOTIFY_PID:0 

불행하게도 이는 QSIZE메시지 크기가 아닌 바이트 단위의 크기일 뿐입니다. Linux(현재 커널 5.4)에는 메시지 수 필드가 없습니다.FreeBSD이는 다음과 같은 CURMSG값을 제공합니다.

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

그래서 대답은~해야 한다"mqueue FS 마운트 및 사용 cat"이지만 그렇지 않습니다. :(

(mqueue FS를 설치하는 것은 MQ API를 사용하기 위한 전제 조건이 아니며 단지 "모든 것이 파일입니다"라는 작업을 수행할 수 있게 해줍니다.)

이 책에는 메시지 대기열에 대한 좋은 소개가 있습니다.리눅스 프로그래밍 인터페이스에는 메시지 대기열 생성, 검사 및 사용을 위한 다양한 CLI 도구에 대한 C 소스 코드가 포함되어 있습니다. 다행히도 이 주제를 다루는 책의 52장은 현재 무료로 다운로드할 수 있습니다. 바라보다 pmsg_getattr.c.

Stephen의 표준 참조 코드유닉스 네트워크 프로그래밍(2권) 2판.(1999) 사용 가능여기, 이는 작업을 수행할 수 있는 다른 기능도 제공합니다 ( 다양한 유형의 헤더가 최신 Unix 시스템과 충돌 하므로 최상위 수준 에서 mqgetattr몇 줄을 수정해야 할 수도 있지만 ).config.h#defineuint

게다가루비,진주그리고TCLRuby에는 이러한 목적을 위한 모듈이 함께 제공됩니다.posix-mq-rbCLI 도구.

답변2

$ ipcs -q메시지 큐 통계는 명령줄에서 제공됩니다.

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

$ ipcs모든 IPC 메커니즘 통계가 제공됩니다.

답변3

어떤 명령도 모르지만 통계를 얻을 수 있는 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 */
       };

관련 정보