ipcs是显示进程间通信设施状态的工具。可以显示消息队列、共享内存和信号量的信息。
命令选项
-i,--id [id]:详细显示指定资源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:以可读的格式显示大小
IPC资源查询
$ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 229376 weber 600 1
------ Message Queues --------
key msqid owner perms used-bytes messages
$ipcs -m 查看系统使用的IPC共享内存资源
$ipcs -q 查看系统使用的IPC队列资源
$ipcs -s 查看系统使用的IPC信号量资源
IPC占用查询
-
获取pid并转化为十六进制
51036 -> c75c
-
查询内存共享占用
$ipcs -m | grep c75c 0x0000c75c 40403197 tdea3 666 536870912 2
IPC参数查询
[root@test4 ~]# ipcs -l
------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18446744073709551612
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 32000
max semaphores per array = 32000
max semaphores system wide = 1024000000
max ops per semop call = 500
semaphore max value = 32767
清除IPC资源
ipcrm -M shmkey 移除用shmkey创建的共享内存段
ipcrm -m shmid 移除用shmid标识的共享内存段
ipcrm -Q msgkey 移除用msqkey创建的消息队列
ipcrm -q msqid 移除用msqid标识的消息队列
ipcrm -S semkey 移除用semkey创建的信号
ipcrm -s semid 移除用semid标识的信号