Linux工具篇--ipcs内存管理

148 阅读2分钟

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占用查询

  1. 获取pid并转化为十六进制

    51036 -> c75c
    
  2. 查询内存共享占用

    $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标识的信号