ipcs -

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

默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列
清除命令是ipcrm [-m|-s|-q] id。
-m 删除共享内存,-s删除共享信号量,-q删除共享队列。
[oracle@trade_as02 ~]$ ipcs -a
 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x30024289 32768      futures   777        528384     1                       
0xca2fd414 491521     oracle    640        1730150400 16                      
 
------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00028009 0          futures   666        1         
0x0002800c 32769      futures   666        1         
0x30024003 262146     futures   777        3         
0x3002428a 294915     futures   777        2         
0x3002428b 327684     futures   777        2         
0x3002428c 360453     futures   777        2         
0x3002428d 393222     futures   777        2         
0x3002428e 425991     futures   777        2         
0x52dff7d0 3964936    oracle    640        151       
0x52dff7d1 3997705    oracle    640        151       
0x52dff7d2 4030474    oracle    640        151       
0x52dff7d3 4063243    oracle    640        151       
0x52dff7d4 4096012    oracle    640        151       
 
------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
共享内存段有时不能马上删除,需使用这个内存段的所有进程向OS发送detach命令时才有释放,此时可以考虑删除进程使用的信号量,帮助释放共享内存段
 
 
 
关键知识:信号量、资源释放、 ipcs ipcrm
信号量又称为信号灯,它是用来协调不同 进程 间的数据对象的,而最主要的应用是共享内存方式的 进程 间通信。本质 上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况;共享内存是运行在同一台机器上的 间通信最快的方式,因为数据不需要在不同的 进程 间复制。通常由一个 进程 创建一块共享内存区,其余 进程 对这块 内存区进行读写。在 Linux 系统下   常用的方式是通过 shmXXX 函数族来实现利用共享内存进行存储的。 Shmget ,类似于  malloc 函数
相关知识:
ipcs 可用来显示当前 Linux 系统中的共享内存段、信号量集、消息队列等的使用情况。
命令示例:
ipcs -a ipc  显示当前系统中共享内存段、信号量集、消息队列的使用情况;
ipcs -m  显示共享内存段的使用情况;
ipcs -s  显示信号量集的使用情况;
ipcs -q  显示消息队列的使用情况;
ipcrm 可用来删除对应的共享内存段、信号量、消息队列;
命令示例:
ipcrm -s semid  删除对应的信号量集
ipcrm -m shmid  删除对应的共享内存段
ipcrm -q msqid  删除对应的消息队列
ipcrm 本身只能实现单个资源的删除,利用以下命令可实现批量删除( zhangsj 版权所有,呵呵):
1.ipcs -s|grep  用户名 |cut -d" " -f2|xargs -n1 ipcrm -s
2.ipcs -s|awk '/ 用户名 /{print $2}'|xargs -n1 ipcrm -s
3.ipcs -s|awk '/ 用户名 /{system("ipcrm -s "$2)}'
4.for i in echo `ipcs|grep  用户名 |cut -d" " -f2`; do ipcrm -s $i; done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值