ipcs 命令 分析消息队列、共享内存和信号量

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


ipcs用于显示消息队列、共享内存、信号灯信息的
q 显示消息队列
s 显示信号灯
m 显示共享内存
a 详细信息

其打印出当前你的系统中处于活动状态的共享内存的信息。

对每一个资源,这个命令会显示:

TYPE 包括信息队列(q),共享内存段(m),或者信号灯(s)。

ID 资源条目的唯一的表示号

KEY 应用程序存取资源使用的参数。

MODE 存取模式和许可权限的标记

OWNER and GROUP 登录名和用户属主的组号,OnLine使用的所有的共享内存资源的属主的属主 为root和informix组。

OnLine共享内存使用的基本键值为0x52564801。SERVERNUM的值乘上0X10000并且加上这个值就为共享内存的键值。这就 是,如果你的SERVERNUM的值为2,你的共享内存段的键值为0x52564801+(2*0x10000)=0x52584801。如果 SERVERNUM的值为6,产生的键值就为0x525c4801。


清除命令:
ipcs -s | grep nobody | perl -e 'while (<STDIN>) { @a=split(/"s+/); print `ipcrm sem $a[1]`}'
然后启动Apache即可

更深入的了解:

 

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 68681743 apache 600 1
0x00000000 68714515 apache 600 1
0x00000000 68747291 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 <semid>

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) = 8388608
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 1024
max semaphores per array = 250
max semaphores system wide = 256000
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 256000 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)

NAME
       ipcs - report status of interprocess communication facilities

SYNOPSIS
       ipcs [-mqs] [-abcopt] [-C core] [-N namelist]

DESCRIPTION
       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.

     Options
       The following options restrict the display to the corresponding
       facilities.

            (none)          This is equivalent to -mqs.

            -m              Display information about active shared memory
                           segments.
            -q              Display information about active message queues.

            -s              Display information about active semaphores.

       The following options add columns of data to the display.   See "Column
       Description" below.

            (none)          Display default columns: for all facilities: T,
                           ID, KEY, MODE, OWNER, GROUP.

            -a              Display all columns, as appropriate.   This is
                           equivalent to -bcopt.

            -b              Display largest-allowable-size information: for
                           message queues: QBYTES; for shared memory
                           segments: SEGSZ; for semaphores: NSEMS.

            -c              Display creator's login name and group name: for
                           all facilities: CREATOR, CGROUP.

            -o              Display information on outstanding usage: for
                           message queues: CBYTES, QNUM; for shared memory
                           segments: NATTCH.

            -p              Display process number information: for message
                           queues: LSPID, LRPID; for shared memory segments:
                           CPID, LPID.

            -t              Display time information: for all facilities:
                           CTIME; for message queues: STIME, RTIME; for

Hewlett-Packard Company             - 1 -    HP-UX Release 11i: November 2000

ipcs(1)                                                              ipcs(1)

                           shared memory segments: ATIME, DTIME; for
                           semaphores: OTIME.

       The following options redefine the sources of information.

            -C core         Use core in place of /dev/kmem.   core can be a
                           core file or a directory created by savecrash or
                           savecore.

            -N namelist     Use file namelist or the namelist within core in
                           place of /stand/vmunix.   It opens a crash dump for
                           reading. Please refer to cr_open(3) for more
                           details.

     Column Descriptions
       The column headings and the meaning of the columns in an ipcs listing
       are given below.   The columns are printed from left to right in the
       order shown below.

            T          Facility type:

                           m     Shared memory segment
                           q     Message queue
                           s     Semaphore

            ID         The identifier for the facility entry.

            KEY        The key used as an argument to msgget(), semget(), or
                      shmget() to create the facility entry.   (Note: The key
                      of a shared memory segment is changed to IPC_PRIVATE
                      when the segment has been removed until all processes
                      attached to the segment detach it.)
            MODE       The facility access modes and flags: The mode consists
                      of 11 characters that are interpreted as follows:

                      The first two characters can be:

                           R     A process is waiting on a msgrcv().
                           S     A process is waiting on a msgsnd().
                           D     The associated shared memory segment has been
                                removed.   It will disappear when the last
                                process attached to the segment detaches it.
                           C     The associated shared memory segment is to be
                                cleared when the first attach is executed.
                           -     The corresponding special flag is not set.

                      The next 9 characters are interpreted as three sets of
                      three characters each.   The first set refers to the
                      owner's permissions, the next to permissions of others
                      in the group of the facility entry, and the last to all

Hewlett-Packard Company             - 2 -    HP-UX Release 11i: November 2000
ipcs(1)                                                              ipcs(1)

                      others.

                      Within each set, the first character indicates
                      permission to read, the second character indicates
                      permission to write or alter the facility entry, and
                      the last character is currently unused.

                           r     Read permission is granted.
                           w     Write permission is granted.
                           a     Alter permission is granted.
                           -     The indicated permission is not granted.

            OWNER      The login name of the owner of the facility entry.

            GROUP      The group name of the group of the owner of the
                      facility entry.

            CREATOR    The login name of the creator of the facility entry.

            CGROUP     The group name of the group of the creator of the
                      facility entry.

            CBYTES     The number of bytes in messages currently outstanding
                      on the associated message queue.

            QNUM       The number of messages currently outstanding on the
                      associated message queue.

            QBYTES     The maximum number of bytes allowed in messages
                      outstanding on the associated message queue.

            LSPID      The process ID of the last process to send a message to
                      the associated message queue.

            LRPID      The process ID of the last process to receive a message
                      from the associated message queue.

            STIME      The time the last msgsnd() message was sent to the
                      associated message queue.

            RTIME      The time the last msgrcv() message was received from
                      the associated message queue.

            CTIME      The time when the associated facility entry was created
                      or changed.

            NATTCH     The number of processes attached to the associated
                      shared memory segment.

            SEGSZ      The size of the associated shared memory segment.

Hewlett-Packard Company             - 3 -    HP-UX Release 11i: November 2000

ipcs(1)                                                              ipcs(1)

            CPID       The process ID of the creating process of the shared
                      memory segment.

            LPID       The process ID of the last process to attach or detach
                      the shared memory segment.

            ATIME      The time the last shmat() attach was completed to the
                      associated shared memory segment.

            DTIME      The time the last shmdt() detach was completed on the
                      associated shared memory segment.

            NSEMS      The number of semaphores in the set associated with the
                      semaphore entry.

            OTIME      The time the last semop() semaphore operation was
                      completed on the set associated with the semaphore
                      entry.

WARNINGS
       ipcs produces only an approximate indication of actual system status
       because system processes are continually changing while ipcs is
       acquiring the requested information.

       Do not rely on the exact field widths and spacing of the output, as
       these will vary depending on the system, the release of HP-UX, and the
       data to be displayed.

FILES
       /dev/kmem            Kernel virtual memory
       /etc/group           Group names
       /etc/passwd          User names
       /stand/vmunix        System namelist
SEE ALSO
       msgop(2), semop(2), shmop(2).

STANDARDS CONFORMANCE
       ipcs: SVID2, SVID3

Hewlett-Packard Company             - 4 -    HP-UX Release 11i: November 2000

转自:http://www.cnblogs.com/rootq/articles/1339475.html

  

posted @ 2011-10-21 15:59  夏大王  阅读(1307)  评论(0编辑  收藏  举报