Bootstrap

linux进程状态Ds,ipcs命令:用于查看Linux进程间通信设施的状态

1.命令简介

ipcs 命令用于查看 Linux 进程间通信设施的状态,包括消息列表、共享内存和信号量的信息。可以帮助开发人员定位进程间通信中出现的问题。

注意,本文描述的是 util-linux 版 ipcs,和其它版本(如 POSIX 版)的实现可能会有出入。

2.命令格式

ipcs[resource-option][output-format]

ipcs[resource-option]-iid

3.命令选项

-i,--idID

详细显示指定资源 ID 的 IPC 信息。使用时需要指定资源类型,资源包括消息队列(-q)、共享内存(-m)和信号量(-s)

-h,--help

显示帮助信息

-V,--version

显示版本信息

IPC 资源类型选项:

-q,--queues

显示活动的消息队列信息

-m,--shmems

显示活动的共享内存信息

-s,--semaphores

显示活动的信号量信息

-a,--all

显示系统内所有的IPC信息。命令的默认选项

输出格式选项:当指定多个时,以最后一个为准。

-c,--creator

查看IPC的创建者和所有者

-l,--limits

查看IPC资源的限制信息

-p,--pid

查看IPC资源的创建者和最后操作者的进程ID

-t,--time

查看最新调用 IPC 资源的详细时间。包括 msgsnd()和 msgrcv()对 message queues 的操作,shmat()和 shmdt()对shared memory 的操作,以及 semop()对 semaphores 的操作

-u,--summary

查看IPC资源状态汇总信息

显示大小单位控制选项:只对选项-l, --limits 生效

-b,--bytes

以字节为单位显示大小

--human

以可读的格式显示大小

4.常用示例

(1)显示所有IPC信息。

2e0c496f1daafc79c426fb303226fa9a.png

(2)显示共享内存指定ID的信息。

[root@TENCENT64/]#ipcs-m-i32769

SharedmemorySegmentshmid=32769

uid=0gid=0cuid=0cgid=0

mode=0666access_perms=0666

bytes=12000lpid=2784cpid=1077nattch=3

att_time=ThuDec2710322018

det_time=ThuDec2710322018

change_time=FriJul2013412018

(3)查看 IPC 的创建这和最最后操作者的进程 ID。

------MessageQueuesPIDs--------

msqidownerlspidlrpid

------SharedMemoryCreator/Last-opPIDs--------

shmidownercpidlpid

0root70223364

32769root7025296

其中 lspid 代表最近一次向消息队列中发送消息的“进程号”,lrpid 对应最近一次从消息队列中读取消息的“进程号”。但请注意:此处的进程号是弱进程号,既它有可能代表的是线程号,如果进程中是起的线程对消息队列发送、接收消息,则此处 pid 对应的均是线程号。可以采用ps -AL | grep pid来查找该线程对应的进程 id。

参考文献

[1] ipcs(1) manual

[2] Index of /pub/linux/utils/util-linux/

[3] ipcs和ipcsrm 命令的使用方法

[4] 工作中常用的Linux命令:ipcs/ipcrm命令

[5] ipcs命令详解——共享内存、消息队列、信号量定位利器

;