IPC(Inter Process Communication)는 message queue( q), shared mem ( m), semaphore (s)의 자원의 현황을 알려준다.
ipcs -l 을 사용하였다.
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1048576
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
ipcs 만 치면 이렇게 나온다.
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 3964928 www 600 1
0x00000000 3997697 www 600 1
0x00000000 4030466 www 600 1
0x00000000 4063235 www 600 1
0x00000000 4096004 www 600 1
------ Message Queues --------
key msqid owner perms used-bytes messages
자원을 삭제할 때는 ipcrm 라는 명령어를 사용하면 된다.
왜 이런 것이 필요할까?
그것은 특정 프로세스가 가지고 있던 자원들을 해제하지 않으면서 생긴 문제를 해결하기 위함이다.
예를 들어 DBMS에 대해서 kill을 했지만, IPC 자원을 해제않는 경우를 확인할 수 있고, 이를 통해서 자원이 낭비되고, 이런식으로 계속 문제가 되면, 시스템 전체에 영향을 미칠 수 있기 때문이다.
예를 들어 apache 데몬의 경우 restart를 했는데, 다음과 같이 세마포를 계속 가지고 있을 수 있다.
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 13434880 www 600 1
0x00000000 13467649 www 600 1
0x00000000 13500418 www 600 1
0x00000000 13533187 www 600 1
0x00000000 13565956 www 600 1
....
....
....
그러면,
ipcs -s |sed "/em/d" | for i in `awk '{print $2}'` ; do ipcrm sem $i ; done
이 명령어를 통해서 싹 정리하면 좋다.
'unix and linux' 카테고리의 다른 글
쉘 에러 bad interpreter: (0) | 2008.12.12 |
---|---|
/etc/sudoers (0) | 2008.11.19 |
파일 길이가 큰 파일 옮기기 (split를 이용하여 리눅스 파일 나누기 합치기) (0) | 2008.06.26 |
bash 문자열 조작 (0) | 2008.06.20 |
고급 Bash 스크립팅 가이드 (0) | 2008.06.20 |