unix/linux下的共享内存、信号量、队列信息管理

在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清楚而引起一些问题。
查看共享信息的内存的命令是ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列
清除命令是ipcrm [-m|-s|-q] id。
-m 删除共享内存,-s删除共享信号量,-q删除共享队列。
[root@gd-67 ~]# ipcs
 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x000000d6 0          root      0          16         1                       
0x000000e0 32769      root      0          40         2                       
0x000000e2 65538      root      0          164444     3                       
0x00000051 98307      root      666        314572800  3                       
0xffffffff 131076     root      0          40         1                       
 
------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00000000 65536      apache    600        1         
0x00000000 32769      apache    600        1         
0x00000000 98306      apache    600        1         
0x00000000 131075     apache    600        1         
 
------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    
 
[root@gd-67 ~]# 
共享内存段有时不能马上删除,需使用这个内存段的所有进程向OS发送detach命令时才有释放,此时可以考虑删除进程使用的信号量,帮助释放共享内存段