10个IPCS命令示例

举报
Tiamo_T 发表于 2022/03/22 10:54:45 2022/03/22
【摘要】 IPC 代表进程间通信,这种技术允许进程相互通信。

IPC 代表进程间通信,这种技术允许进程相互通信。

既然每个进程都有自己的地址空间和唯一的用户空间,那么进程之间如何通信呢?

答案是内核,它是 Linux 操作系统的核心,可以访问整个内存。因此我们可以请求内核分配可用于进程间通信的空间。

该进程还可以通过让两个进程都可以访问的文件来进行通信。进程可以打开和读取/写入文件,这需要大量的 I/O 操作,耗费时间。

不同类型的 IPCS

有各种 IPC 允许一个进程与另一个进程进行通信,无论是在同一台计算机中还是在同一网络中的不同计算机中。

  • 管道——为进程提供一种通过交换消息相互通信的方式。命名管道为运行在不同计算机系统上的进程提供了一种通过网络进行通信的方式。
  • 共享内存——进程可以在共享内存中交换值。一个进程将创建其他进程可以访问的一部分内存。
  • 消息队列——它是一个结构化和有序的内存段列表,进程在其中存储或检索数据。
  • 信号量——为访问相同资源的进程提供同步机制。没有数据通过信号量传递;它只是协调对共享资源的访问。

10 IPCS 命令示例

ipcs 是一个 UNIX/Linux 命令,用于列出有关进程间通信的信息 ipcs 命令提供关于 System V IPCS(消息队列、信号量和共享内存)的报告。

IPCS 示例 1:列出所有 IPC 设施

带有 -a 选项的 ipcs 命令列出了对当前进程具有读取访问权限的所有 IPC 设施。它提供了有关消息队列、信号量和共享内存的详细信息。

# ipcs -a

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0xc616cc44 1056800768 oracle    660        4096       0
0x0103f577 323158020  root      664        966        1
0x0000270f 325713925  root      666        1          2

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x0103eefd 0          root      664        1
0x0103eefe 32769      root      664        1
0x4b0d4514 1094844418 oracle    660        204

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x000005a4 32768      root       644        0            0

所有 IPC 设施都有唯一的密钥和标识符,用于标识 IPC 设施。

IPCS 示例 2:列出所有消息队列

带有选项 -q 的 ipcs 仅列出当前进程具有读取权限的消息队列。

$ ipcs -q

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x000005a4 32768      root       644        0            0

IPCS 示例 3. 列出所有信号量

ipcs -s 选项用于列出可访问的信号量。

# ipcs -s

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x0103eefd 0          root      664        1
0x0103eefe 32769      root      664        1
0x4b0d4514 1094844418 oracle    660        204

IPCS 示例 4. 列出所有共享内存

ipcs -m 选项与 ipcs 命令列出共享内存。

# ipcs -m

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0xc616cc44 1056800768 oracle    660        4096       0
0x0103f577 323158020  root      664        966        1
0x0000270f 325713925  root      666        1          2

IPCS 示例 5. IPC 设施的详细信息

ipcs -i 选项提供有关 ipc 设施的详细信息。

# ipcs -q -i 32768

Message Queue msqid=32768
uid=0   gid=0   cuid=0  cgid=0  mode=0644
cbytes=0        qbytes=65536    qnum=0  lspid=0 lrpid=0
send_time=Not set
rcv_time=Not set
change_time=Thu Aug  5 13:30:22 2010

选项 -i 和 -q 提供有关特定消息队列的信息。选项 -i 和 -s 提供信号量详细信息。选项 -i 和 -m 提供有关共享内存的详细信息。

IPCS 示例 6. 列出 IPC 设施的限制

ipcs -l 选项给出每个 ipc 设施的系统限制。

# ipcs -m -l

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 17179869184
min seg size (bytes) = 1

上面的命令给出了共享内存的限制。-l 可以与 -q 和 -s 组合以分别查看消息队列和信号量的限制。

单个选项 -l 给出了所有三个 IPC 设施的限制。

# ipcs -l

IPCS 示例 7. 列出 IPC 设施的创建者和所有者详细信息

ipcs -c 选项列出创建者用户标识和组标识以及所有者用户标识和组标识。此选项可以与 -m、-s 和 -q 结合使用,以查看特定 IPC 设施的创建者详细信息。

# ipcs -m -c

------ Shared Memory Segment Creators/Owners --------
shmid      perms      cuid       cgid       uid        gid
1056800768 660        oracle     oinstall   oracle     oinstall
323158020  664        root       root       root       root
325713925  666        root       root       root       root

IPCS 示例 8. 最近访问 IPC 设施的进程 ID

ipcs -p 选项显示创建者 ID,以及最近访问相应 ipc 设施的进程 ID。

# ipcs -m -p

------ Shared Memory Creator/Last-op --------
shmid      owner      cpid       lpid
1056800768 oracle     16764      5389
323158020  root       2354       2354
325713925  root       20666      20668

-p 也可以与 -m、-s 或 -q 组合使用。

IPCS 示例 9. 上次访问时间

ipcs -t 选项显示每个 ipc 设施的最后操作时间。此选项也可以与 -m、-s 或 -q 结合使用以打印特定类型的 ipc 设施。对于消息队列,-t 选项显示上次发送和接收时间,对于共享内存,它显示上次附加(内存部分)和分离时间戳,对于信号量,它显示上次操作和更改时间详细信息。

# ipcs -s -t

------ Semaphore Operation/Change Times --------
semid    owner      last-op                    last-changed
0        root        Thu Aug  5 12:46:52 2010   Tue Jul 13 10:39:41 2010
32769    root        Thu Aug  5 11:59:10 2010   Tue Jul 13 10:39:41 2010
1094844418 oracle      Thu Aug  5 13:52:59 2010   Thu Aug  5 13:52:59 2010

IPCS 示例 10. 当前使用状态

带有 -u 命令的 ipcs 显示所有 IPC 设施的当前使用情况。此选项可以与特定选项结合使用,以显示特定 IPC 设施的状态。

# ipcs -u

------ Shared Memory Status --------
segments allocated 30
pages allocated 102
pages resident  77
pages swapped   0
Swap performance: 0 attempts     0 successes

------ Semaphore Status --------
used arrays = 49
allocated semaphores = 252

------ Messages: Status --------
allocated queues = 1
used headers = 0
used space = 0 bytes
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。