현재 세마포어를 실행 중인 프로세스를 가져오는 방법을 알고 싶습니다 /proc
. SysVIPC 하위 디렉터리를 통해 가능할 것 같습니다. 하지만 이 명령을 어떻게 사용하는지 모르겠습니다.
우분투12.10
답변1
세마포어와 공유 메모리에 대한 나의 유일한 경험은 명령을 사용하는 것입니다 ipcs
. 보세요IPCS 매뉴얼 페이지자세한 내용은.
이 명령은 세마포어가 있는 프로세스를 보여줍니다.
$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x4d114854 65536 saml 600 8
이제 semid가 알려졌으므로 세마포어를 사용하여 PID에 대한 추가 정보를 쿼리할 수 있습니다(8 - nsems 열이 있음).
$ ipcs -s -i 65536
Semaphore Array semid=65536
uid=500 gid=501 cuid=500 cgid=501
mode=0600, access_perms=0600
nsems = 8
otime = Sun May 12 14:44:53 2013
ctime = Wed May 8 22:12:15 2013
semnum value ncount zcount pid
0 1 0 0 0
1 1 0 0 0
2 1 0 0 2265
3 1 0 0 2265
4 1 0 0 0
5 1 0 0 0
6 1 0 0 4390
7 1 0 0 4390
pid 열은 이러한 프로세스입니다. 파일 시스템을 사용 ps
하거나 이를 통해 /proc
찾을 수 있습니다 /proc/<pid>
.
예를 들어:
$ more /proc/2265/cmdline
mono
POSIX 및 SystemV
/proc/2265/map
@lgeorget님이 남긴 댓글을 바탕으로 PID 2265의 내용을 파헤쳐보니 다음과 같은 /dev/shm
참고자료를 찾았습니다.
$ grep shm /proc/2265/maps
7fa38e7f6000-7fa38ebdf000 rw-s 00000000 00:11 18517 /dev/shm/mono-shared-500-shared_fileshare-grinchy-Linux-x86_64-40-12-0
7fa38f0ca000-7fa38f0cb000 rw-s 00000000 00:11 18137 /dev/shm/mono.2265
7fa3967be000-7fa3967d3000 rw-s 00000000 00:11 18516 /dev/shm/mono-shared-500-shared_data-grinchy-Linux-x86_64-328-12-0