在进程通讯应用中会用到共享内存,这就涉及到了IPC,与IPC相关的命令包括:ipcs、ipcrm(释放IPC)。IPCS命令是Linux下显示进程间通讯设施状态的工具。咱们知道,系统进行进程间通讯(IPC)的时候,可用的方式包括信号量、共享内存、消息队列、管道、信号(signal)、套接字等形式[2]。使用IPCS能够查看共享内存、信号量、消息队列的状态。工具
当下系统是Centos,执行ipcs命令查看spa
说明:code
具体的用法总结以下:
一、显示全部的IPC设施blog
# ipcs -a
二、显示全部的消息队列Message Queue队列
# ipcs -q
三、显示全部的信号量进程
# ipcs -s
四、显示全部的共享内存ip
# ipcs -m
五、显示IPC设施的详细信息内存
# ipcs -q -i id
id 对应shmid、semid、msgid等。-q对应设施的类型(队列),查看信号量详细状况使用-s,查看共享内存使用-m。消息队列
六、显示IPC设施的限制大小class
# ipcs -m -l
-m对应设施类型,可选参数包括-q、-m、-s。
七、显示IPC设施的权限关系
# ipcs -c # ipcs -m -c # ipcs -q -c # ipcs -s -c
八、显示最近访问过IPC设施的进程ID。
# ipcs -p # ipcs -m -p # ipcs -q -p
九、显示IPC设施的最后操做时间
# ipcs -t # ipcs -q -t # ipcs -m -t # ipcs -s -t
十、显示IPC设施的当前状态
# ipcs -u
Linux上的ipcs命令,不支持UNIX上的-b、-o指令,一样UNIX中不支持-l、-u指令,因此在编写跨平台的脚本时,须要注意这个问题。
删除IPC
ipcrm -m| -q| -s shm_id
例如,咱们在以0x12345678为KEY建立了一个共享内存,能够直接使用ipcrm -M 0x12345678来删除共享内存区域。
下面的命令能够释放全部已分配的共享内存:
ipcs -m | awk '$2 ~ /[0-9]+/ {print $2}' | while read s; do sudo ipcrm -m $s; done