ipcs 命令

用途

报告进程间通信工具状态。

语法

ipcs [ -m] [ -q] [ -s] [ -S] [ -P] [ -1] [ -a | -b -c -o -p -r -t] [ -T] [ -C CoreFile] [ -N Kernel ] [ -X ] [ -@ [ WparName ]]

描述

ipcs 命令往标准输出写入一些关于活动进程间通信工具的信息。 如果没有指定标志,ipcs 命令用简短格式写入一些关于当前活动消息队列、共享内存段、信号量、远程队列和本地队列标题。

列标题和在 ipcs 命令中的列的含义列在下面。 圆括号内的字母表示导致对应的报头出现的标志。 all 设计符表示始终显示报头。 这些标志仅仅确定提供给每个设备何种信息。 但它们并不确定将列示哪些设备。

描述
all)工具的类型。 共有三种工具类型:
q
消息队列
m
共享内存段
信号量
标识 all)工具项的标识。
key all)用作 msgget 子例程、semget 子例程或者 shmget 子例程的参数的键构成了工具项。

注: 当删除内存段时,共享内存段的密钥改变为 IPC_PRIVATE,直到所有附加在段上的进程和它拆离。

方式 all)工具访问方式和标志。 这种方式由 11 个字符组成,解释如下:

前两个字符如下所示:

R
如果进程在等待 msgrcv 系统调用。
如果进程在等待 msgsnd 系统调用。
如果有关的共享内存段被删除。 当附加在段上的最后一个进程拆离后它就会消失。
C
当第一个附加进程运行时,如果有关的共享内存段被清空。
-
如果没有设置相应的特定标志。

接下来的九个字符作为每三个一组解释。 第一组是指拥有者有许可权;第二组是指在工具项的用户组中其他用户的许可权;最后一组指所有的用户。 在每组中,第一个字符表示允许读取,第二个字符表示可以写或者修改工具项,最后一个字符当前没有用过。

权限如下所示:

R
如果授予了读许可权。
w
如果授予了写许可权。
a
如果授予了修改许可权。
-
如果没有授予指定的许可权。
所有者 all)工具项所有者的登录名。
GROUP all)拥有工具项的组名。
CREATOR ac)工具项创建者的登录名。
CGROUP ac)工具项创建者的组名。

注: 对于 OWNERGROUP CREATORCGROUP,显示用户和组的标识而不显示登录名。

CBYTES ao)当前停留在相关消息队列中的消息的字节数。
QNUM ao)当前停留在相关消息队列中的消息的字节数。
QBYTES ab)停留在相关消息队列中消息允许的最大字节数。
LSPID ap)发送消息到相关队列的最后进程的标识。 如果发送的最后一条消息是来自节点上的进程而不是保留该节点的队列,LSPID 是真正将消息放进队列的内核进程的 PID,而不是发送进程的 PID。
LRPID ap)接收来自相关队列的消息的进程标识。 如果接收的最后一条消息来自一个节点上的进程而不是保留该队列的节点,LRPID 是真正接收队列上消息的内核进程的 PID,而不是接收进程的 PID。
STIME at)最后一条消息发送到相关队列的时间。 对于远程队列来说,这是服务器时间。 没有做任何措施来补偿本地时钟和服务器时钟之间的时区差异。
RTIME at)接受最后一条来自相关队列的消息的时间。 对于远程队列来说,这是服务器时间。 没有做任何措施来补偿本地时钟和服务器始终之间的时区差异。
ctime at)创建和改变相关项的时间。 对于远程队列来说,这是服务器时间。 没有做任何措施来补偿本地时钟和服务器始终之间的时区差异。
NATTCH ao)连接在关联的共享内存段的进程数。
SEGSZ ab)相关联共享内存段的大小(以字节计)。
CPID ap)共享内存项的创建程序的进程标识。
LPID ap)连接或者拆离共享内存段的最后一个进程的标识。
atime at)最后一次与关联的共享内存段完成连接的时间。
DTIME at)最后一次与关联的共享内存段完成拆离的时间。
NSEMS ab)在与信号项相关联的信号集中的信号量数量。
时间 at)在关联的信号量中完成信号量操作的时间。
SID S)共享内存段的标识。 可将 SID用作 斯文 -S 命令的输入。

该命令支持多字节字符集。

标志

描述
使用 -b-c-o-p-t 标志。
-b 写入消息队列的队列上消息的最大字节数、共享内存段的大小、每个信号集中信号量的数量。
-c 写入构建该工具的用户的登录名和组名称。
-C核心文件 用由 CoreFile 参数指定的文件来代替 /dev/mem 文件。 CoreFile 参数是由 Ctrl-(left)Alt-Pad1 键序列创建的内存映像文件。
-1 当和 -S 标志配合使用时,写入打开的 SID 列表。
-M 写入一些关于活动共享内存段的信息。
-N内核 用指定的 Kernel /usr/lib/boot/unix 文件是缺省的)。
-O 写以下的使用信息:
  • 队列上的消息数
  • 消息队列上消息的总字节数
  • 连接在共享内存段上的进程数
-p 写进程编号的信息:
  • 最后接收消息队列上消息的进程号
  • 最后在消息队列上发送消息的进程号
  • 创建进程的进程号
  • 最后一个连接或拆离共享内存段的进程编号
-P 写入与共享内存标识有关的 SID(段标识)列表,以及保留在那个段中的字节数,和段是否已启用大页的标志符。 如果段支持大页面,就显示一个 'Y',否则显示一个 '-'。
-q 写入一些关于活动消息队列的信息。
-r 写入有关可移植操作系统接口 (POSIX) 实时进程间通信对象的信息。
-s 写入一些关于活动信号集的信息。
-S 写入连接在共享内存标识上的 SID 列表。
-t 写入时间信息:
  • 最后一次更改所有设备访问许可权的控制操作的时间。
  • 消息队列上最后一次执行 msgsndmsgrcv 的时间。
  • 共享内存上最后一次执行 shmatshmdt 的时间。
  • 在信号集上最后一次执行 semop 的时间。
-t 写入带有日期的 -t 标志的输出。
-X 显示每个用户名和所有者、创建者、所有者组以及创建者组的组名的所有可用字符,而不是将它们截断只剩前面 8 个字符。
-@ [ WparName ] 报告 工作负载分区的进程间通信工具状态。 如果指定了 WparName ,那么将针对该特定 工作负载分区显示进程间通信设施的状态。 如果未指定 WparName ,那么将显示所有活动 工作负载分区的进程间通信设施的状态。 将显示与该对象关联的 工作负载分区 的名称。

Global 指定为 WparName 以仅显示该操作系统环境的 IPC 对象信息,不包括该环境主管的工作负载分区的任何 IPC 信息。

注意:
  1. 如果用户指定 -C 或者 -N 标志,实型和有效的 UID/GID 设置为调用 ipcs 的用户的实型 UID/GID。
  2. 当运行 ipcs 时可以更改值;仅当检索它时它给出的信息才保证是正确的。

安全性

RBAC 用户和可信AIX用户请注意:此命令可执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 要获取与此命令相关联的特权和权限的列表,请参阅 lssecattr 命令或 getcmdattr 子命令。

示例

输入的输出示例ipcs不带标志:

IPC status from /dev/mem as of Mon Aug 14 15:03:46 1989
T    ID         KEY        MODE       OWNER     GROUP
Message Queues:
q       0    0x00010381 -Rrw-rw-rw-   root      system
q   65537    0x00010307 -Rrw-rw-rw-   root      system
q   65538    0x00010311 -Rrw-rw-rw-   root      system
q   65539    0x0001032f -Rrw-rw-rw-   root      system
q   65540    0x0001031b -Rrw-rw-rw-   root      system
q   65541    0x00010339--rw-rw-rw-    root      system
q       6    0x0002fe03 -Rrw-rw-rw-   root      system
Shared Memory:
m   65537    0x00000000 DCrw-------   root      system
m  720898    0x00010300 -Crw-rw-rw-   root      system
m   65539    0x00000000 DCrw-------   root      system
Semaphores:
s  131072    0x4d02086a --ra-ra----   root      system
s   65537    0x00000000 --ra-------   root      system
s 1310722    0x000133d0 --ra-------   7003      30720

文件

描述
/usr/lib/boot/unix 指定系统内核映像。
/dev/mem 指定内存。
/etc/passwd 指定用户名。
/etc/group 指定组名。
/usr/include/sys/ipc.h 包含头文件。