ipcs命令

unix/linux下的共享内存、信号量、队列信息管理 在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清楚而引起一些问题。

查看共享信息的内存的命令是ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列

清除命令是ipcrm [-m|-s|-q] id。 -m 删除共享内存,-s删除共享信号量,-q删除共享队列。

共享内存段有时不能马上删除,需使用这个内存段的所有进程向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

时间: 2024-08-25 17:37:42

ipcs命令的相关文章

ipcs命令详解

基础命令学习目录首页 多进程间通信常用的技术手段包括共享内存.消息队列.信号量等等,Linux系统下自带的ipcs命令是一个极好的工具,可以帮助我们查看当前系统下以上三项的使用情况,从而利于定位多进程通信中出现的通信问题.目前也有一些帖子介绍ipcs命令的使用方法,但是介绍较简单不够全面,下面我根据个人的使用经验详细介绍下ipcs命令的使用方法.ipcs -h可以查看该命令的使用帮助: ipcs -a命令可以查看当前使用的共享内存.消息队列及信号量所有信息,对于该选项对应的结果,介绍以下几个部分

linux ipcs命令详解

本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式 ipcs [resource-option] [output-format] ipcs [resource-option] -i id 2. 命令功能 提供IPC设备的信息 3. 使用方法 resource选项: ipcs -m 查看系统共享内存信息 ipcs -q 查看系统消息队列信息 ipcs -s 查看系统信号量信息 ipcs [-a

[20191119]探究ipcs命令输出.txt

$ man ipcsIPCS(8)                    Linux Programmer's Manual                   IPCS(8)NAME       ipcs - provide information on ipc facilities SYNOPSIS       ipcs [ -asmq ] [ -tclup ]       ipcs [ -smq ] -i id       ipcs -h DESCRIPTION       ipcs pr

oracle 共享内存查看 ipcs命令详解

ipcs - provide information on ipc facilities DESCRIPTION ipcs provides information on the ipc facilities for which the calling process has read access. The -i option allows a specific resource id to be specified.  Only information on this id will be

ipcs、ipcrm命令

进程间通信概述进程间通信有如下的目的:1.数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间:2.共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到:3.通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情:4.资源共享,多个进程之间共享同样的资源.为了做到这一点,需要内核提供锁和同步机制:5.进程控制,有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能

linux进程管理的常用命令

执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的时候,每个进程会被动态得分配系统资源.内存.安全属性和与之相关的状态.可以有多个进程关联到同一个程序,并同时执行不会互相干扰.操作系统会有效地管理和追踪所有运行着的进程. 为了管理这些进程,用户应该能够: 查看所有运行中的进程 查看进程消耗资源 定位个别进程并且对其执行指定操作 改变进程的优先级 杀死指定进程 限制进程可用的系统资源等 Linux提供了许多命令来让用户来高效掌控上述的操作.接下来,一个一个的来讲解下. 1. ps

centos73如何获取某个命令的源代码

比如获取ipcs命令的源代码 1.首先获取ipcs所属的rpm包 yum provides ipcs 输出结果,可以看出ipcs属于util-linux-2.23.2-33.el7 rpm包 2.下载srpm包 方法一: yumdownloader --source util-linux 方法二: http://vault.centos.org/ 3.解压srpm,会生成源代码包 rpm -ivf  util-linux-2.23.2-33.el7_3.2.src.rpm 源代码所在位置 /ro

【Kill】两条Linux命令彻底杀死Oracle

今天编写的两条极具杀伤力的命令,它可以瞬间将Oracle杀死在无形之中.后面我将给出简单注释并展示一下它的威力.$ ps -ef |grep $ORACLE_SID|grep -v grep|awk '{print $2}' | xargs kill -9$ ipcs -m | grep oracle | awk '{print $2}' | xargs ipcrm shm 这两条命令的来由:今天处理了三起Oracle数据库无故无法登录的问题,无论你采取什么手段都无法登陆到Oracle的SQL*

Linux下常用命令总结

Linux下有很多命令,但是这里只讲解常用的一些,以及这些命令在开发软件时好用的一面. 1. ls命令 [[email protected] test]$ ls -lR.:total 8drwxrwxr-x 2 xbh xbh 4096 Nov 29 21:44 1drwxrwxr-x 2 xbh xbh 4096 Nov 29 21:44 2 ./1:total 0-rw-rw-r-- 1 xbh xbh 0 Nov 29 21:44 1.txt ./2:total 0-rw-rw-r-- 1