ipcs命令行工具

ipcs 是一个在 Unix/Linux 系统中用于查看 进程间通信 设施状态信息的命令行工具。

一、什么是进程间通信

进程间通信是允许不同进程(运行中的程序)交换数据和同步操作的机制。ipcs 主要报告以下三种 IPC 资源的详细信息:

  1. 共享内存 - 多个进程可以访问的同一块内存区域
  2. 信号量 - 用于进程间的同步和互斥
  3. 消息队列 - 进程间通过消息传递数据

二、基本命令格式

bash 复制代码
ipcs [options]

三、常用选项参数

选项 说明
-m 查看共享内存信息
-q 查看消息队列信息
-s 查看信号量信息
-a 查看所有 IPC 信息(默认)
-t 显示时间信息
-p 显示进程 ID 信息
-c 显示创建者/所有者信息
-l 显示系统 IPC 资源限制
-u 显示使用情况摘要
-i <id> 显示指定 ID 的详细信息

四、命令输出详解

1. 查看所有 IPC 资源

bash 复制代码
ipcs -a
# 或直接
ipcs

2. 共享内存信息示例

bash 复制代码
ipcs -m

输出字段说明:

复制代码
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 32769      user       600        524288     2          dest
0x00000000 32770      user       600        4194304    1          dest
  • key: IPC 键值,0x00000000 表示私有
  • shmid: 共享内存段 ID
  • owner: 所有者用户名
  • perms: 权限(八进制,类似文件权限)
  • bytes: 共享内存大小(字节)
  • nattch: 当前附加的进程数
  • status: 状态(dest 表示标记为删除)

3. 消息队列信息

bash 复制代码
ipcs -q
复制代码
------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    
0x00000456 0          root       644        0            0

4. 信号量信息

bash 复制代码
ipcs -s
复制代码
------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00000111 0          user       600        1

五、实用示例

1. 查看详细信息(包含创建进程和最后操作进程)

bash 复制代码
ipcs -m -p -c
  • -p 显示创建进程和最后操作的进程 ID
  • -c 显示创建者和所有者

2. 查看特定用户的 IPC 资源

bash 复制代码
ipcs -m -u -c | grep username

3. 查看系统 IPC 限制

bash 复制代码
ipcs -l

输出系统对 IPC 资源的限制,如:

复制代码
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398509481980
min seg size (bytes) = 1

------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384

------ 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

4. 查看使用情况统计

bash 复制代码
ipcs -u

5. 查看特定 ID 的详细信息

bash 复制代码
ipcs -m -i 32769

六、配合 ipcrm 删除 IPC 资源

当需要清理 IPC 资源时,使用 ipcrm 命令:

bash 复制代码
# 删除共享内存
ipcrm -m shmid

# 删除消息队列
ipcrm -q msqid

# 删除信号量
ipcrm -s semid

# 通过 key 值删除
ipcrm -M key
ipcrm -Q key
ipcrm -S key
相关推荐
A-刘晨阳2 小时前
【云原生】Prometheus之PromQL用法详解
运维·云原生·grafana·prometheus·监控·promql
Run_Teenage2 小时前
Linux:硬链接与软链接
linux·运维·服务器
每日出拳老爷子2 小时前
【浏览器方案】只用浏览器访问的内网会议系统设计思路(无客户端)
运维·服务器·webrtc·实时音视频·流媒体
wgl6665202 小时前
自主Shell命令行解释器
linux·运维·windows
熙丫 133814823862 小时前
以新国标开启网络安全保障新视野——CISAW安全运维认证助力专业人才培养
运维·安全·web安全
Crazy________2 小时前
Kubernetes探针实战和生命周期
linux·服务器·网络·kubernetes
时空自由民.2 小时前
SSH 免密连接服务器
运维·服务器·ssh
算法小菜鸟成长心得3 小时前
记录自己第一次将React 编写的前端部署到服务器,实现外网访问
服务器·前端·react.js