linux进程通信系统,linux进程间通信(ipc诊断工具)

ipcs作用

查看当前系统共享内存、消息队列、信号量的使用情况,利于定位多进程通信中出现的通信问题。

ipcs 命令格式

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

1、信号量在创建时分信号量集和信号量的概念,该命令的查询结果中,Semaphore

Arrays下面每一行代表一个信号量集,其中perms对应信号量集的权限,nsems对应信号量集中信号量的个数,对于信号量集的创建方法可以查询semctl相关的函数使用方法。

2、对于消息队列Message

Queues而言,可以看到msqid对应创建队列时得到的id值,从messages中可以看到当前队列中存在的消息个数,从used_bytes中可以看到当前所有消息占用的字节数,所以单个消息的字节数则为总字节数除以消息数。

如果消息个数不为零则说明消息队列中的消息没有得到及时处理,可据此判断是否存在队列阻塞的风险。

参数说明

ipcs -p命令可以得到与共享内存、消息队列相关进程之间的消息。

a4c26d1e5885305701be709a3d33442f.png

1、从该命令结果中可以看到Message Queues

PIDs中的msqid既对应上条命令结果中的消息队列id,根据id则可以获取到lspid、lrpid消息,其中lspid代表最近一次向消息队列中发送消息的“进程号”,lrpid对应最近一次从消息队列中读取消息的“进程号”。

注意:此处的进程号是弱进程号,既它有可能代表的是线程号,如果进程中是起的线程对消息队列发送、接收消息,则此处pid对应的均是线程号。可以采用ps

-AL | grep pid来查找该线程对应的进程id。

a4c26d1e5885305701be709a3d33442f.png

ipcs

-l命令可以查看各个资源的系统限制信息,可以看到系统允许的最大信号量集及信号量个数限制、最大的消息队列中消息个数等信息。

1、从中可以看到以下信号量的限制信息,其中信号量集最大个数为128、每个信号量集中信号量最大个数为250、所有信号量最大个数为32000、每个信号量可以被同时调用的次数为32,这些参数是linux系统下的默认参数,对于限制参数也可以做一定程度的优化,提升系统性能。

ipcrm

格式:ipcrm [ -M key | -m id | -Q key | -q id

| -S key | -s id ]

1.ipcrm命令用来删除ipc相关的数据信息的,但是删除操作必须得是超级用户或者具有对ipc相应的权限才可以。

2.ipcrm可删除三种类型的ipc:共享内存、信号量、消息队列

3.删除消息队列或信号量时是立即生效的,而删除共享内存时,需引用共享内存的进程已经释放了共享内存才会生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值