麒麟操作系统共享内存段信息查看方法

作者:技术拾光时间:2026-07-17 08:31:08浏览:77

排查麒麟系统共享内存问题时,首先使用cat/proc/sysvipc/shm或ipcs-m命令查看所有共享内存段,并仔细关注其大小和最后操作进程ID两个关键字段,接着通过ipcs-m-i和ps命令来精确定位归属的进程,确认没有任何有效使用者之后,再使用ipcrm-m命令进行安全清理操作。

排查麒麟系统共享内存问题时,典型操作路径如下:先用 cat /proc/sysvipc/shm 或 ipcs -m 查看当前有哪些活动段,重点关注 size 和 lpid 字段;接着用 ipcs -m -i [shmid] 查归属进程,再用 ps -p [PID] 确认进程是否仍然存活;确认没有有效使用者后,最后用 ipcrm -m [shmid] 安全清理。这套流程走下来,绝大多数残留问题都能得到解决。

麒麟操作系统共享内存段信息查看方法

查看系统当前活动的共享内存段

直接读取内核维护的 /proc/sysvipc/shm 接口即可,该文件以结构化表格形式实时列出所有尚未被销毁的共享内存段。字段包括键值、ID、拥有者、权限、大小和连接数。

操作很简单,打开终端执行:

cat /proc/sysvipc/shm

输出中每行对应一个共享内存段,重点关注第4列(size,单位字节)和第7列(lpid,最后操作该段的进程PID)。如果看到 size 为 0 或者 lpid 是 0,基本可以判断该段已经失效,只是尚未被彻底清理。

用ipcs命令解析共享内存段详情

ipcs 是 SysV IPC 的标准工具,能将 /proc/sysvipc/shm 的原始数据转换为更易读的形式,并且支持按权限、大小、连接数等维度筛选,比直接 cat 更方便判断异常段。

三种常用方法:

方法一:列出全部共享内存段(含键、ID、所有者、权限、字节数、连接进程数)
ipcs -m

方法二:只显示当前用户拥有的共享内存段,避免 root 或其他服务创建的段干扰判断
ipcs -m -u

方法三:按大小降序排列,快速定位占用过大的段
ipcs -m --sort size | tail -n +2

小提示:如果提示 command not found,先执行 sudo apt install util-linux 安装对应包即可。

定位共享内存段归属的进程

当发现某个共享内存段 size 异常大,或者 lpid 长时间未更新时,必须查清楚是哪个进程创建并持有的,否则不宜贸然清理。具体操作分三步:

第一步:从 ipcs -m 输出中复制目标段的 shmid(第2列数字)。

第二步:用 ipcs -m -i [shmid] 查看该段详细信息,其中 pid of creator 和 pid of last operator 字段明确标出创建者与最近操作者的 PID。

第三步:用 ps 反查进程名:
ps -p [PID] -o pid,ppid,comm,args

如果 ps 没有输出,说明该进程已经退出,但共享内存段因未调用 shmctl(IPC_RMID) 而残留——这种情况下可以安全删除。

删除指定共享内存段

这一步有风险,只有确认段已无有效使用者后才能执行删除,否则误删正在使用的段会导致关联进程崩溃。执行命令:

ipcrm -m [shmid]

删除成功后,再用 ipcs -m 确认该 ID 已不再显示。如果返回 Invalid argument,说明该 shmid 已不存在或权限不足,需要检查是否输错了 ID,或者漏加了 sudo。