码迷,mamicode.com
首页 > 系统相关 > 详细

linux ipcs命令详解

时间:2019-06-23 17:32:26      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:rac   nal   oba   选项   temp   同步   not   image   详解   



本文链接:http://www.cnblogs.com/MartinChentf/p/6057100.html (转载请注明出处) ipcs 1. 命令格式   ipcs [resource-option] [output-format]   ipcs [resource-option] -i id 2. 命令功能   提供IPC设备的信息 3. 使用方法  resource选项:   ipcs -m  查看系统共享内存信息   ipcs -q  查看系统消息队列信息   ipcs -s  查看系统信号量信息   ipcs [-a] 系统默认输出信息,显示系统内所有的IPC信息 复制代码 [martin@localhost data]$ ipcs -a ------ Message Queues -------- key msqid owner perms used-bytes messages ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 229376 martin 600 4194304 2 dest 0x00000000 196609 martin 600 524288 2 dest 0x00000000 327682 martin 600 393216 2 dest 0x00000000 491525 martin 600 2097152 2 dest ------ Semaphore Arrays -------- key semid owner perms nsems 复制代码  输出格式控制:   ipcs -c  查看IPC的创建者和所有者   ipcs -l  查看IPC资源的限制信息   ipcs -p  查看IPC资源的创建者和使用的进程ID   ipcs -t  查看最新调用IPC资源的详细时间   ipcs -u  查看IPC资源状态汇总信息 复制代码 [martin@localhost data]$ ipcs -u --human ------ Messages Status -------- allocated queues = 0 used headers = 0 used space = 0B ------ Shared Memory Status -------- segments allocated 4 pages allocated 1760 pages resident 339 pages swapped 0 Swap performance: 0 attempts 0 successes ------ Semaphore Status -------- used arrays = 0 allocated semaphores = 0 复制代码  额外格式控制:   ipcs -l --human     以人类可以阅读的方式显示size 复制代码 [martin@localhost data]$ ipcs -l --human ------ Messages Limits -------- max queues system wide = 3644 max size of message = 8K default max size of queue = 16K ------ Shared Memory Limits -------- max number of segments = 4096 max seg size = 16E max total shared memory = 16E min seg size = 1B ------ Semaphore Limits -------- max number of arrays = 128 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 3276 复制代码 ipcrm 1. 命令功能   通过指定ID删除删除IPC资源,同时将与IPC对象关联的数据一并删除,只有超级用户或IPC资源创建者能够删除 2. 使用方法   ipcrm -M shmkey     移除用shmkey创建的共享内存段   ipcrm -m shmid     移除用shmid标识的共享内存段   ipcrm -S semkey     移除用semkey创建的信号量   ipcrm -s semid     移除用semid标识的信号量   ipcrm -Q msgkey     移除用msgkey创建的消息队列   ipcrm -q msgid     移除用msgid标识的消息队列


===========================================================================================

MOS 中的解释 ORA-00600 [SKGMHASH] Starting up an ASM/RDBMS Instance (Doc ID 756713.1)

SOLUTION

- In case the cause is a conflicting with existing memory segment, You should remove that segment,
for example: 


Starting ORACLE instance (normal)
Errors in file /u01/app/oracle/diag/asm/+asm/+ASM2/trace/+ASM2_ora_13099.trc (incident=1):
ORA-00600: internal error code, arguments: [SKGMHASH], [1], [1839154636], [0], [0], [], [], [], [], [], [], []
Incident details in: /u01/app/oracle/diag/asm/+asm/+ASM2/incident/incdir_1/+ASM2_ora_13099_i1.trc
Sweep [inc][1]: completed


Looking in ipcs -m we see:

# ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status 
0x74027e1b 98304 root 600 4 0 
0x6d9f45cc 1212417 oracle 660 4096 0 

# echo "obase=16;1839154636" | bc -q
6D9F45CC

Note this is the 3rd argument from the ora-600 and it matches the key of the existing shared segment. To resolve the situation, issue:

ipcrm -M 0x6d9f45cc
 

 

ipc进程间通信概述

进程间通信有如下的目的:1、数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间;2、共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到;3、通知事件,一个进程需要向另一个或一组进程发送消息,通知它们发生了某件事情;4、资源共享,多个进程之间共享同样的资源。为了做到这一点,需要内核提供锁和同步机制;5、进程控制,有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。

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

技术图片

其中:

第一列就是共享内存的key;

第二列是共享内存的编号shmid;

第三列就是创建的用户owner;

第四列就是权限perms;

第五列为创建的大小bytes;

第六列为连接到共享内存的进程数nattach;

第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为 SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销 毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。

具体的用法总结如下:

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 -m | awk ‘$2 ~ /[0-9]+/ {print $2}‘ | while read s; do sudo ipcrm -m $s; done

linux ipcs命令详解

标签:rac   nal   oba   选项   temp   同步   not   image   详解   

原文地址:https://www.cnblogs.com/chendian0/p/11073340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!