zoukankan      html  css  js  c++  java
  • linux 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




  • 相关阅读:
    来自平时工作中的javascript知识的积累---持续补充中
    javascript function
    CSS3 3D变换
    HTTP1.1缓存策略
    jQuery插件开发
    mac下好用的工具收录(慢慢完善)
    mac 彻底卸载vscode
    Git冲突:commit your changes or stash them before you can merge. 解决办法(转载)
    关于vscode使用的一些设置
    (linux服务器)apache开启gzip的配置以及效果对比
  • 原文地址:https://www.cnblogs.com/djinmusic/p/2917350.html
Copyright © 2011-2022 走看看