排查麒麟系统共享内存问题时,首先使用cat/proc/sysvipc/shm或ipcs-m命令查看所有共享内存段,并仔细关注其大小和最后操作进程ID两个关键字段,接着通过ipcs-m-i和ps命令来精确定位归属的进程,确认没有任何有效使用者之后,再使用ipcrm-m命令进行安全清理操作。
麒麟操作系统共享内存段信息查看方法
时间:2026-07-17
浏览:76
文章目录
排查麒麟系统共享内存问题时,典型操作路径如下:先用 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。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。