ipcs – 分析消息队列、共享内存和信号量
ipcs – report status of interprocess communication facilities
ipcs displays certain information about active interprocess communication facilities. With no options, ipcs displays information in short format for the message queues, shared memory segments, and semaphores that are currently active in the system.
它的语法:
ipcs [-mqs] [-abcopt] [-C core] [-N namelist]
-m 输出有关共享内存(shared memory)的信息
-q 输出有关信息队列(message queue)的信息
-s 输出信号量(semaphore)的信息
# ipcs -m
IPC status from as of 2007年04月10日 星期二 18时32分18秒 CST
T ID KEY MODE OWNER GROUP
Shared Memory:
m 0 0x50000d43 –rw-r–r– root root
m 501 0x1e90c97c –rw-r—– oracle dba
ipcrm – 删除ipc(清除共享内存信息)
ipcrm -m|-q|-s shm_id
-m 输出有关共享内存(shared memory)的信息
-q 输出有关信息队列(message queue)的信息
-s 输出信号量(semaphore)的信息
shm_id 共享内存id
#ipcrm -m 501
其打印出当前你的系统中处于活动状态的共享内存的信息。
对每一个资源,这个命令会显示:
TYPE 包括信息队列(q),共享内存段(m),或者信号灯(s)。
ID 资源条目的唯一的表示号
KEY 应用程序存取资源使用的参数。
MODE 存取模式和许可权限的标记
OWNER and GROUP 登录名和用户属主的组号,OnLine使用的所有的共享内存资源的属主的属主 为root和informix组。
OnLine共享内存使用的基本键值为0x。SERVERNUM的值乘上0X10000并且加上这个值就为共享内存的键值。这就 是,如果你的SERVERNUM的值为2,你的共享内存段的键值为0x+(2*0x10000)=0x。如果 SERVERNUM的值为6,产生的键值就为0x525c4801。
清除命令:
ipcs -s | grep nobody | perl -e ‘while (
) { @a=split(/”s+/); print `ipcrm sem $a[1]`}’
更深入的了解:
Fixing Apache “No space left on device: Couldn’t create accept lock” errors
Error Message: When starting Apache, I get this error message in the main Apache error_log:
[emerg] (28)No space left on device: Couldn’t create accept lock
[notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[notice] Digest: generating secret for digest authentication …
[notice] Digest: done
[warn] pid file /etc/httpd/run/httpd.pid overwritten — Unclean shutdown of previous Apache run?
[emerg] (28)No space left on device: Couldn’t create accept lock
First off, check to make sure that you really aren’t out of disk space, or have hit a quota limit. Another way that Apache can create the “accept lock” is with a semaphore. A semaphore is an inter-process communication tool that is used by Apache to communicate with it’s child processes. This error message may mean that Apache couldn’t create a new semaphore.
Check to see how many semaphores are currently in use. If Apache is running correctly, you should see something like this:
# ipcs -s
—— Semaphore Arrays ——–
key semid owner perms nsems
0x00000000 apache 600 1
0x00000000 apache 600 1
0x00000000 apache 600 1
If Apache is stopped, and you still see these semaphores, then you can safely kill them by running this command for each semaphore id (in the second column)
$ ipcrm -s
To destroy all semaphores, you can run this from the command line (with “apache” being the apache-user):
for semid in `ipcs -s | grep nobody | cut -f2 -d” “`;
do ipcrm -s $semid; done
If you are out of semaphores
If you can’t create any more semaphores:
Sometimes your system may need to increase the number of semaphores that are available on the system. This requires a change to a kernel parameter. If you are running on a virtual server and cannot modify kernel parameters, you may need to ask your hosting provider to change this parameter on their host server To view the current parameters:
# ipcs -l
—— Shared Memory Limits ——–
max number of segments = 4096
max seg size (kbytes) = 32768
max total shared memory (kbytes) =
min seg size (bytes) = 1
—— Semaphore Limits ——–
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide =
max ops per semop call = 32
semaphore max value = 32767
—— Messages: Limits ——–
max queues system wide = 1024
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
To change these parameters, modify the file /etc/sysctl.conf and add the following lines:
kernel.msgmni = 1024
kernel.sem = 250 32 1024
Then load these settings with the command:
sysctl -p
Your Apache process should now be able to create the needed semaphores and run properly
这里介绍下kernel.msgmni
/proc/sys/kernel/msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
缺省设置:16
在 root 下用 sysctl kernel.msgmni 检查该参数, 也可以在命令行下
sysctl -w kernel.msgmni=XXX 重新设定。
man ipcs:
ipcs(1) ipcs(1)
(none) This is equivalent to -mqs.
-s Display information about active semaphores.
Hewlett-Packard Company – 1 – HP-UX Release 11i: November 2000
ipcs(1) ipcs(1)
The following options redefine the sources of information.
T Facility type:
ID The identifier for the facility entry.
The first two characters can be:
others.
OWNER The login name of the owner of the facility entry.
CREATOR The login name of the creator of the facility entry.
SEGSZ The size of the associated shared memory segment.
Hewlett-Packard Company – 3 – HP-UX Release 11i: November 2000
ipcs(1) ipcs(1)
Hewlett-Packard Company – 4 – HP-UX Release 11i: November 2000
转载于:https://www.cnblogs.com/rootq/articles/1339475.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208869.html原文链接:https://javaforall.net
