在unix/linux下,經常有因爲共享內存、信號量,隊列等共享信息沒有乾淨地清楚而引起一些問題。
查看共享信息的內存的命令是ipcs [-m|-s|-q]。
默認會列出共享內存、信號量,隊列信息,-m列出共享內存,-s列出共享信號量,-q列出共享隊列。
怎樣清楚呢?
清楚命令是ipcrm [-m|-s|-q] id。
-m 刪除共享內存,-s刪除共享信號量,-q刪除共享隊列。
下面是一個操作示例:
view plaincopy to clipboardprint?
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0399ef4c 262145 ora 660 255852544 55
------ Semaphore Arrays --------
key semid owner perms nsems
0x965bd64c 884736 ora 660 154
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0399ef4c 262145 ora 660 255852544 50
------ Semaphore Arrays --------
key semid owner perms nsems
0x965bd64c 884736 ora 660 154
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcrm -m 262145
[ora@localhost ora]$ ipcrm -s 884736
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
[ora@localhost ora]$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
[ora@localhost ora]$ ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0399ef4c 262145 ora 660 255852544 55
------ Semaphore Arrays --------
key semid owner perms nsems
0x965bd64c 884736 ora 660 154
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x0399ef4c 262145 ora 660 255852544 50
------ Semaphore Arrays --------
key semid owner perms nsems
0x965bd64c 884736 ora 660 154
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcrm -m 262145
[ora@localhost ora]$ ipcrm -s 884736
[ora@localhost ora]$ ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
[ora@localhost ora]$ ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
[ora@localhost ora]$ ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
[ora@localhost ora]$ ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
在上面示例示例中:
首先用ipcs命令列出了共享內存、共享隊列,共享信號量。
顯示出當前系統中有共享內存,共享信號量,沒有共享隊列。
然後執行ipcrm -m 262145清楚共享semid=262145的共享內存。
執行ipcrm -s 884736清楚共享信號量semid=884736的共享信號量。
最後執行ipcs查看共享內存、共享隊列,共享信號量信息,發現全都沒有了,說明上面的ipcrm清楚共享內存和共享信號量成功。
文章出處:http://blog.csdn.net/chenxiaohua/archive/2009/03/24/4021270.aspx