Linux中ipcs和ipcrm命令

ipcs与ipcrm是两个很不错的命令,主要在查看共享内存、信号量;以及在程序调试时,清除相关的共享内存及信号量

ipcs:check the shared memory allocation on a system
ipcrm:manually deallocate shared memory on a system


ipcs命令的文档帮助:

[root@wangerxiao ~]# ipcs --help 
Usage:
 ipcs [resource ...] [output-format]
 ipcs [resource] -i <id>

Options:
 -i, --id <id>  print details on resource identified by id

Resource options:
 -m, --shmems      shared memory segments  输出有关共享内存(shared memory)的信息
 -q, --queues      message queues    输出有关信息队列(message queue)的信息
 -s, --semaphores  semaphores     输出有关“遮断器”(semaphore)的信息
 -a, --all         all (default)

Output format:
 -t, --time        show attach, detach and change times
 -p, --pid         show creator and last operations PIDs
 -c, --creator     show creator and owner
 -l, --limits      show resource limits
 -u, --summary     show status summary
     --human       show sizes in human readable format
 -b, --bytes       show sizes in bytes


ipcs命令的输出:

[root@wangerxiao ~]# ipcs

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages    

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status      
0x00000000 65536      root       600        524288     2          dest         
0x00000000 163841     root       600        4194304    2          dest         

------ Semaphore Arrays --------
key        semid      owner      perms      nsems     
0x00105b6b 32768      root       600        1         
0x00105b6c 65537      root       666        1     


第一列就是共享内存的key;
第二列是共享内存的编号shmid;
第三列就是创建的用户owner;
第四列就是权限perms;
第五列为创建的大小bytes;
第六列为连接到共享内存的进程数nattach;
第七列是共享内存的状态status。其中显示“dest”表示共享内存段已经被删除,但是还有用户在使用它,当该段内存的mode字段设置为SHM_DEST时就会显示“dest”。当用户调用shmctl的IPC_RMID时,内存先查看多少个进程与这个内存关联着,如果关联数为0,就会销毁这段共享内存,否者设置这段内存的mod的mode位为SHM_DEST,如果所有进程都不用则删除这段共享内存。


ipcrm用于删除ipc(清除共享内存信息)
ipcrm命令文档:

[root@wangerxiao ~]# ipcrm --help 
Usage:
 ipcrm [options]
 ipcrm <shm|msg|sem> <id> [...]
Options:
 -m, --shmem-id <id>        remove shared memory segment by shmid
 -M, --shmem-key <key>      remove shared memory segment by key
 -q, --queue-id <id>        remove message queue by id
 -Q, --queue-key <key>      remove message queue by key
 -s, --semaphore-id <id>    remove semaphore by id
 -S, --semaphore-key <key>  remove semaphore by key
 -a, --all[=<shm|msg|sem>]  remove all
 -v, --verbose              explain what is being done

移除一个消息对象。或者共享内存段,或者一个信号集,同时会将与ipc对象相关链的数据也一起移除。当然,只有超级管理员,或者ipc对象的创建者才有这项权利啦

ipcrm -M shmkey  移除用shmkey创建的共享内存段
ipcrm -m shmid    移除用shmid标识的共享内存段
ipcrm -Q msgkey  移除用msqkey创建的消息队列
ipcrm -q msqid  移除用msqid标识的消息队列
ipcrm -S semkey  移除用semkey创建的信号
ipcrm -s semid  移除用semid标识的信号

栗子:
ipcrm -m 501for i in `ipcs |grep oracle|awk   '{print $2}'`
do
ipcrm -m $i
ipcrm -s $i
done
ps -ef|egrep "ora_|asm_"|grep -v grep |grep -v crs|awk '{print $2}' |xargs kill -9


共享内存大小修改


使用下面的命令查看共享内存的大小:
# cat /proc/sys/kernel/shmmax

修改共享内存大小:
临时修改:在root用户下执行# echo 268435456 > /proc/sys/kernel/shmmax把共享内存大小设置为256MB;
永久修改:在root用户下修改/etc/rc.d/rc.local文件,加入下面一行:
echo 268435456 > /proc/sys/kernel/shmmax
即可每次启动时把共享内存修改为256MB。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值