ipcs 查询进程间通信状态
ipcs 查询进程间通信状态
linux/uinx上进程间通信方式,包括共享内存,消息队列,信号
ipcs是Linux下显示进程间通信设施状态的工具。可以显示消息队列、共享内存和信号量的信息。对于程序员非常有用,普通的系统管理员一般用不到此指令。
1. IPC资源查询
查看系统使用的IPC资源
$ipcs------ Shared Memory Segments -------- key shmid owner perms bytes nattch status------ Semaphore Arrays -------- key semid owner perms nsems 0x00000000 229376 weber 600 1------ Message Queues -------- key msqid owner perms used-bytes messages
分别查询IPC资源:
$ipcs -m 查看系统使用的IPC共享内存资源 $ipcs -q 查看系统使用的IPC队列资源 $ipcs -s 查看系统使用的IPC信号量资源
查看IPC资源被谁占用
示例:有个IPCKEY(51036),需要查询其是否被占用;
首先通过计算器将其转为十六进制:
51036 -> c75c
如果知道是被共享内存占用:
$ipcs -m | grep c75c 0x0000c75c 40403197 tdea3 666 536870912 2
如果不确定,则直接查找:
$ipcs | grep c75c 0x0000c75c 40403197 tdea3 666 536870912 2 0x0000c75c 5079070 tdea3 666 4
2. 系统IPC参数查询
ipcs -l------ Shared Memory Limits -------- max number of segments = 4096 max seg size (kbytes) = 4194303 max total shared memory (kbytes) = 1073741824 min seg size (bytes) = 1------ Semaphore Limits -------- max number of arrays = 128 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 32767------ Messages: Limits -------- max queues system wide = 2048 max size of message (bytes) = 524288 default max size of queue (bytes) = 5242880
以上输出显示,目前这个系统的允许的最大内存为1073741824kb;最大可使用128个信号量,每个消息的最大长度为524288bytes;
3. 修改IPC系统参数
以linux系统为例,在root用户下修改/etc/sysctl.conf 文件,保存后使用sysctl -p生效:
$cat /etc/sysctl.conf # 一个消息的最大长度 kernel.msgmax = 524288# 一个消息队列上的最大字节数 # 524288*10 kernel.msgmnb = 5242880#最大消息队列的个数 kernel.msgmni=2048#一个共享内存区的最大字节数 kernel.shmmax = 17179869184#系统范围内最大共享内存标识数 kernel.shmmni=4096#每个信号灯集的最大信号灯数 系统范围内最大信号灯数 每个信号灯支持的最大操作数 系统范围内最大信号灯集数 #此参数为系统默认,可以不用修改 #kernel.sem = <semmsl> <semmni>*<semmsl> <semopm> <semmni> kernel.sem = 250 32000 32 128
显示输入不带标志的 ipcs:的输出:
$ipcs IPC status from /dev/mem as of Mon Aug 14 15:03:46 1989 T ID KEY MODE OWNER GROUP Message Queues: q 0 0x00010381 -Rrw-rw-rw- root system q 65537 0x00010307 -Rrw-rw-rw- root system q 65538 0x00010311 -Rrw-rw-rw- root system q 65539 0x0001032f -Rrw-rw-rw- root system q 65540 0x0001031b -Rrw-rw-rw- root system q 65541 0x00010339--rw-rw-rw- root system q 6 0x0002fe03 -Rrw-rw-rw- root system Shared Memory: m 65537 0x00000000 DCrw------- root system m 720898 0x00010300 -Crw-rw-rw- root system m 65539 0x00000000 DCrw------- root system Semaphores: s 131072 0x4d02086a --ra-ra---- root system s 65537 0x00000000 --ra------- root system s 1310722 0x000133d0 --ra------- 7003 30720
4. 清除IPC资源
使用ipcrm 命令来清除IPC资源:这个命令同时会将与ipc对象相关联的数据也一起移除。当然,只有root用户,或者ipc对象的创建者才有这项权利;
ipcrm用法:
ipcrm -M shmkey 移除用shmkey创建的共享内存段 ipcrm -m shmid 移除用shmid标识的共享内存段 ipcrm -Q msgkey 移除用msqkey创建的消息队列 ipcrm -q msqid 移除用msqid标识的消息队列 ipcrm -S semkey 移除用semkey创建的信号 ipcrm -s semid 移除用semid标识的信号
清除当前用户创建的所有的IPC资源:
ipcs -q | awk '{ print "ipcrm -q "$2}' | sh > /dev/null 2>&1; ipcs -m | awk '{ print "ipcrm -m "$2}' | sh > /dev/null 2>&1; ipcs -s | awk '{ print "ipcrm -s "$2}' | sh > /dev/null 2>&1;
5. 综合应用
查询user1用户环境上是否存在积Queue现象
查询队列Queue:
$ipcs -q------ Message Queues -------- key msqid owner perms used-bytes messages 0x49060005 58261504 user1 660 0 0 0x4f060005 58294273 user1 660 0 0 ...
找出第6列大于0的服务:
$ ipcs -q |grep user1 |awk '{if($5>0) print $0}' 0x00000000 1071579324 user1 644 1954530 4826 0x00000000 1071644862 user1 644 1961820 4844 0x00000000 1071677631 user1 644 1944810 4802 0x00000000 1071710400 user1 644 1961820 4844
ipcs 查询进程间通信状态相关推荐
- mysql 状态查询_MySQL状态查询
查询最大链接数: show variables like '%max%': 查询当前状态: show status like '%conn%': 查询当前连接详情: show full process ...
- 用sc命令查询系统状态
用sc命令查询系统状态 sc query 语法 sc query - Enumerates status for active services & driver ...
- 苏州实时公交app接口根据站台查询公交状态
苏州实时公交app接口根据站台查询公交状态,查询公交详细信息. 接口名称:苏州实时公交app接口 接口平台:api接口 接口地址:http://apis.juhe.cn/szbusline/bus 支 ...
- 页面HTTP状态查询“返回状态码:200 ”是什么意思?(网页响应状态码)
200是响应正常的意思,这个是服务器返回页面的响应头信息.里面bai的Transfer-Encoding: chunked,意思是使用了提前不可知数据长度的传输方式,需要浏览器继续读取响应,接下来才知 ...
- laravel 同数据表字段比较查询和状态不正规排序
今天写群组推荐接口,要求未满的群 ( 群最大人数字段maxusers, 群人数字段affiliations_count 都在群组表中),官方,热门(普通群0 ,官方1,热门2 ) 排序的群 同表字段比 ...
- html状态查询爱站,批量查询网页状态码以及标题
做SEO以及SEM的时候经常会要用到查询网页的标题以及状态码,这篇文章使用2种方法批量查询网页标题与状态码.并快速批量导出数据 使用爱站SEO工具 操作如上图,直接通过文件导入然后可以批量查询网页的状 ...
- 怎么查快递单号,查询物流状态未签收单号
大家查快递单号,查每个快递单号如何快速查询物流信息呢?下面一起看批量查询物流信息,筛选出未签收单号,一起来看操作步骤. 先浏览快递单号用快递批量查询高手查询出来的快递单号物流效果. 全部单号及物流信息 ...
- java编程根据订单编号查询订单状态_Java微信订单查询
Java 通过统一下单 API 进行订单支付后,除等待微信通过 notify_url 进行回调通知外,还可以主动查询订单状态 更多精彩 前置条件 可参考 Java 微信扫码支付 如果实现微信支付 官网 ...
- ASP.NET MVC 支付宝sdk 查询订单状态 填坑攻略
1.alipay.trade.query(统一收单线下交易查询) 前情提要: 请把扫码支付分解为两步理解 扫码成功 : 客户的支付宝软件会发送支付宝(注这里不再经过我们开发的服务器)第一次请求创建订 ...
最新文章
- 北京计算机学院 肖战,Shuai Li
- 自动驾驶产业链全梳理
- 基于OpenCV实战的图像处理:色度分割
- Android数据存储之SD卡
- Lucene 学习笔记(一)
- golang连接mysql操作示例增删改查(已经测试)
- Python之路番外(第二篇):PYTHON基本数据类型和小知识点
- 使用tesseract-ocr破解网站验证码
- MongoDB数据建模介绍
- 【广告技术】使用图神经网络进行信息聚合与推理,解决多证据事实验证问题
- 如何选择机器人的电机
- elasticsearch安装使用
- java snakeyaml_JAVA基于SnakeYAML实现解析与序列化YAML
- java实现小写金额转换大写金额
- php strtok函数,strtok函数的使用示例
- 如何启用计算机网络共享,无法启用共享访问,教您无法启用共享访问怎么解决...
- 拜占庭容错算法的新发展——GBFT
- 算法:五笔编码,如何根据输入的词条自动生成输入编码
- POS软件金管家:想知道上个月的商品剩下多少库存?可以查得到吗?
- ug编程内公差和外公差是什么_UG 加工编程简答参考
热门文章
- config.php 注入,FreePBX admin/config.php页面SQL注入漏洞
- MATLAB自定义函数 计算三元函数矢量符号微分
- 解决android:padding=“@dimen/activity_vertical_margin“> 标红问题
- 判断复选框是否被选中
- Web API 项目中启用 Swagger UI
- SpringDataJPA 系列之 JPA 简介
- 计算机金融考研学校排名,金融学专业考研最好考10大高校排行
- udp网络程序-端口问题
- 慧拓 规划算法实习生 20220818 笔面试
- 重新理解SQL Server的聚集索引表与堆表