良许Linux教程网 干货合集 Linux系统共享内存

Linux系统共享内存

共享内存在进程通信中会用到,共享内存是指两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。下面良许教程网为大家详细讲解一下Linux系统共享内存。

u=3468337307,3354835096&fm=26&gp=0

当下系统是Centos,执行ipcs命令查看

img

说明:

  • 第一列就是共享内存的key;

  • 第二列是共享内存的编号shmid;

  • 第三列就是创建的用户owner;

  • 第四列就是权限perms;

  • 第五列为创建的大小bytes;

  • 第六列为连接到共享内存的进程数nattach;

  • 第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为 SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销 毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。

具体的用法总结如下: 1、显示所有的IPC设施

 # ipcs -a

2、显示所有的消息队列Message Queue

 # ipcs -q

3、显示所有的信号量

 # ipcs -s

4、显示所有的共享内存

 # ipcs -m

5、显示IPC设施的详细信息

 # ipcs -q -i id

id 对应shmid、semid、msgid等。-q对应设施的类型(队列),查看信号量详细情况使用-s,查看共享内存使用-m。

6、显示IPC设施的限制大小

 # ipcs -m -l

-m对应设施类型,可选参数包括-q、-m、-s。

7、显示IPC设施的权限关系

 # ipcs -c
 # ipcs -m -c
 # ipcs -q -c
 # ipcs -s -c

8、显示最近访问过IPC设施的进程ID。

 # ipcs -p
 # ipcs -m -p
 # ipcs -q -p

9、显示IPC设施的最后操作时间

 # ipcs -t
 # ipcs -q -t
 # ipcs -m -t
 # ipcs -s -t

10、显示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

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部