在麒麟系统中,可通过cat /proc/sysvipc/shm或ipcs -m查看活动共享内存段,重点关注size和lpid字段;用ipcs -m -i [shmid]查归属进程,ps -p [PID]确认进程状态;确认无有效使用者后,用ipcrm -m [shmid]安全删除。

查看系统当前活动的共享内存段
在麒麟操作系统中确认正在运行的进程是否创建了共享内存段,需直接读取内核维护的/proc/sysvipc/shm接口,该文件以结构化表格形式实时列出所有未被销毁的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。


















