이것은 내 이전과 관련이 있습니다.질문.
Linux 시스템(예: sys V IPC)에서 IPC 채널에 대한 통계를 찾을 수 있다면 어떤 프로세스가 특정 IPC 채널을 사용하고 있는지 어떻게 알 수 있습니까(채널을 통해 전송, 수신기는 일반적으로 명령 출력에 언급됨).
예를 들어, ipcs
머신의 공유 메모리 ID 목록을 알려주십시오. 이 공유 메모리를 사용하고 있는 프로세스를 어떻게 찾을 수 있나요?
내가 관심 있는 다른 IPC(통계를 찾는 데 사용하는 명령은 다음과 같습니다):
- 관로:
lsof | grep pipe
- UNIX 도메인 소켓:
netstat -n
답변1
을 사용할 수도 ipcs
있지만 추가 옵션을 추가할 수 있습니다.
wouter@gangtai:~$ ipcs
------ Message Queues --------
key msqid owner perms used-bytes messages
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0052e2c1 32768 postgres 600 56 20
0x00000000 17924097 wouter 600 33554432 2 dest
0x00000000 49446914 wouter 600 524288 2 dest
[...]
wouter@gangtai:~$ ipcs -i 17924097 -m -p
Shared memory Segment shmid=17924097
uid=1000 gid=1000 cuid=1000 cgid=1000
mode=01600 access_perms=0600
bytes=33554432 lpid=3808 cpid=1457 nattch=2
att_time=Fri Jul 3 10:43:28 2015
det_time=Fri Jul 3 10:43:28 2015
change_time=Fri Jul 3 10:03:00 2015
lpid
"마지막 방문자" PID는 cpid
"작성자" PID입니다.
이 -i
매개변수에는 확인하려는 IPC 개체(공유 메모리 세그먼트, 메시지 큐 또는 세마포어)의 ID가 필요합니다. 이 -m
플래그는 메모리 세그먼트를 검사하고 -p
프로세스 ID를 보려는 의미이기 때문입니다.
전체 내용을 확인하세요 man ipcs
.