关于linux中ipcs -q 消息的问题

关于linux中ipcs -q 消息的问题,第1张

在unix/linux下,经常有因为共享内存、信号量队列等共享信息没有干净地清楚而引起一些问题。

查看共享信息的内存的命令是ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列。

怎样清楚呢?

清除命令是ipcrm [-m|-s|-q] id。

-m 删除共享内存,-s删除共享信号量,-q删除共享队列。

下面是一个 *** 作示例:

view plaincopy to clipboardprint?

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x0399ef4c 262145 ora 660 255852544 55

------ Semaphore Arrays --------

key semid owner perms nsems

0x965bd64c 884736 ora 660 154

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x0399ef4c 262145 ora 660 255852544 50

------ Semaphore Arrays --------

key semid owner perms nsems

0x965bd64c 884736 ora 660 154

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcrm -m 262145

[ora@localhost ora]$ ipcrm -s 884736

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcs -m

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

[ora@localhost ora]$ ipcs -s

------ Semaphore Arrays --------

key semid owner perms nsems

[ora@localhost ora]$ ipcs -q

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x0399ef4c 262145 ora 660 255852544 55

------ Semaphore Arrays --------

key semid owner perms nsems

0x965bd64c 884736 ora 660 154

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x0399ef4c 262145 ora 660 255852544 50

------ Semaphore Arrays --------

key semid owner perms nsems

0x965bd64c 884736 ora 660 154

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcrm -m 262145

[ora@localhost ora]$ ipcrm -s 884736

[ora@localhost ora]$ ipcs

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

------ Message Queues --------

key msqid owner perms used-bytes messages

[ora@localhost ora]$ ipcs -m

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

[ora@localhost ora]$ ipcs -s

------ Semaphore Arrays --------

key semid owner perms nsems

[ora@localhost ora]$ ipcs -q

------ Message Queues --------

key msqid owner perms used-bytes messages

在上面示例示例中:

首先用ipcs命令列出了共享内存、共享队列,共享信号量。

显示出当前系统中有共享内存,共享信号量,没有共享队列。

然后执行ipcrm -m 262145清楚共享semid=262145的共享内存。

执行ipcrm -s 884736清楚共享信号量semid=884736的共享信号量。

最后执行ipcs查看共享内存、共享队列,共享信号量信息,发现全都没有了,说明上面的ipcrm清楚共享内存和共享信号量成功

Linux进程间通信由以下几部分发展而来:

早期UNIX进程间通信:包括管道、FIFO、信号。

基于System V的进程间通信:包括System V消息队列、System V信号灯(Semaphore)、System V共享内存。

基于Socket进程间通信。

基于POSIX进程间通信:包括POSIX消息队列、POSIX信号灯、POSIX共享内存。

Linux中,与IPC相关的命令包括:ipcs、ipcrm(释放IPC)、

IPCS命令是Linux下显示进程间通信设施状态的工具。我们知道,系统进行进程间通信(IPC)的时候,可用的方式包括信号量、共享内存、消息队列、管道、信号(signal)、套接字等形式[2]。使用IPCS可以查看共享内存、信号量、消息队列的状态。

例如在CentOS6.0上执行ipcs

具体的用法总结如下:

1、显示所有的IPC设施

# ipcs -a

2、显示所有的消息队列Message Queue

# ipcs -q

3、显示所有的信号量

# ipcs -s

4、显示所有的共享内存

# ipcs -m

5、显示IPC设施的详细信息

# ipcs -q -i id

id 对应shmid、semid、msgid等。-q对应设施的类型(队列),查看信号量详细情况使用-s,查看共享内存使用-m。

6、显示IPC设施的限制大小

# ipcs -m -l

-m对应设施类型,可选参数包括-q、-m、-s。

7、显示IPC设施的权限关系

# ipcs -c

# ipcs -m -c

# ipcs -q -c

# ipcs -s -c

8、显示最近访问过IPC设施的进程ID。

# ipcs -p

# ipcs -m -p

# ipcs -q -p

9、显示IPC设施的最后 *** 作时间

# ipcs -t

# ipcs -q -t

# ipcs -m -t

# ipcs -s -t

10、显示IPC设施的当前状态

# ipcs -u

Linux上的ipcs命令,不支持UNIX上的-b、-o指令,同样UNIX中不支持-l、-u指令,所以在编写跨平台的脚本时,需要注意这个问题。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8701717.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存