1. 命令简介
ipcs 命令用于报告 Linux 系统中进程间通信(IPC)设施的状态信息。它是一个重要的系统管理工具,可以帮助开发者和管理员查看当前系统中活跃的消息队列、共享内存段和信号量集,包括它们的标识符、所有者、权限、大小和使用状态等。这对于调试多进程应用、排查资源泄漏或进行系统资源审计非常有用。
2. 语法格式
plaintext
ipcs [资源选项] [输出选项] [通用选项]3. 常用选项及说明
资源选项
用于指定要显示的 IPC 资源类型。默认(不指定任何资源选项)或使用 -a 会显示所有类型的资源。
表格
| 选项 | 长格式 | 说明 |
|---|---|---|
| -a | --all | 显示所有类型的 IPC 资源(消息队列、共享内存、信号量)。这是默认行为。 |
| -q | --queues | 仅显示消息队列(Message Queues)的信息。 |
| -m | --shmems | 仅显示共享内存段(Shared Memory Segments)的信息。 |
| -s | --semaphores | 仅显示信号量集(Semaphore Sets)的信息。 |
输出选项
用于控制输出信息的格式和详细程度。
表格
| 选项 | 长格式 | 说明 |
|---|---|---|
| -t | --time | 显示资源的最后操作时间(消息队列的 msgsnd/msgrcv,共享内存的 shmat/shmdt,信号量的 semop)。 |
| -p | --pid | 显示创建者进程 ID(cpid) 和最后操作者进程 ID(lpid)。 |
| -c | --creator | 显示创建者(cuid/cgid) 和所有者(uid/gid) 的用户 ID 和组 ID。 |
| -l | --limits | 显示系统对各类 IPC 资源的限制参数(如最大数量、最大尺寸等)。 |
| -u | --summary | 显示 IPC 资源的使用情况摘要,包括资源总数、使用量等。 |
| --human | — | 以人类易读的格式(如 K、M、G)显示大小信息。 |
| -b | --bytes | 以字节为单位显示大小信息。此选项通常与 -l(显示限制)一起使用,影响限制值中的大小单位。 |
通用选项
表格
| 选项 | 长格式 | 说明 |
|---|---|---|
| -i <id> | --id <id> | 显示指定 ID 的 IPC 资源的详细信息。必须与资源类型选项(-q, -m, -s)之一配合使用。 |
| -h | --help | 显示帮助信息。 |
| -V | --version | 显示命令版本信息。 |
4. 示例用法
查看所有 IPC 资源(默认视图)
bash
运行
ipcs或
bash
运行
ipcs -a仅查看共享内存段
bash
运行
ipcs -m查看 IPC 资源并显示创建者和最后操作者的进程 PID
bash
运行
ipcs -p查看 IPC 资源并显示详细的创建 / 操作时间
bash
运行
ipcs -t组合使用选项:查看共享内存的详细信息(包括 PID 和时间)
bash
运行
ipcs -m -t -p查看系统对 IPC 资源的限制
bash
运行
ipcs -l以字节为单位显示限制中的大小:
bash
运行
ipcs -l -b查看指定 ID 的共享内存段的详细信息
bash
运行
ipcs -m -i 32769(假设 32769 是某个共享内存段的 shmid)
以人类易读的格式(如 KB, MB)显示大小
bash
运行
ipcs --human获取 IPC 资源使用情况的简要统计
bash
运行
ipcs -u5. 注意事项
- 权限要求:普通用户通常只能查看自己拥有的或具有读取权限的 IPC 资源。要查看系统上所有的 IPC 资源,通常需要 root 权限。
- 资源标识:输出中的 key(关键字)和 id(标识符)是 IPC 资源的重要标识。key 用于在程序间约定资源,id 是内核分配的唯一标识,ipcrm 命令删除资源时通常使用 id。
- 状态字段:
- nattch:对于共享内存,表示当前附加(attach)到该内存段的进程数。当此值为 0 且状态不为 dest 时,表示内存段未被使用但仍占用资源。
- status:dest 状态表示该资源已被标记为待销毁,将在最后一个使用它的进程分离后由内核自动清理。
- -i 选项的配合:使用 -i <id> 时必须同时指定资源类型(-q, -m, -s 之一),否则命令无法确定你指的是哪种资源的 ID。
- 资源管理:ipcs 仅用于查看。若要删除 IPC 资源,需使用 ipcrm 命令;若要创建,可使用 ipcmk 命令(但通常 IPC 资源由应用程序通过系统调用直接创建)。
相关命令
- ipcrm:删除指定的 IPC 资源(消息队列、共享内存、信号量)。
- ipcmk:创建 IPC 资源(主要用于测试或脚本)。
- lsipc:另一个用于列出 IPC 设施信息的工具,输出格式可能与 ipcs 不同,在某些发行版中可用。
获取更多Linux学习资料请关注“阿成学长工具包”,对话框中输入2647获取