首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux下令详解-ipcs和ipcrm

2013-10-09 
linux命令详解--ipcs和ipcrmipcs和ipcrm用法简介命令名称:ipcs使用权限:所有使用者使用方式:ipcs [-m|-q|-

linux命令详解--ipcs和ipcrm

ipcs和ipcrm用法简介

命令名称:ipcs

使用权限:所有使用者

使用方式:

ipcs [-m|-q|-s]

-m       输出有关共享内存(shared memory)的信息

-q       输出有关信息队列(message queue)的信息

-s       输出有关“遮断器”(semaphore)的信息

命令名称:ipcrm

使用权限:所有使用者

使用方式:

ipcrm [ -M key | -m id | -Q key | -q id | -S key | -s id ] ...

说明:删除消息队列、共享内存、信号灯

参数:

-M   以shmkey删除共享内存

-m   以shmid删除共享内存

-Q   以msgkey删除消息队列

-q    以msgid删除消息队列

-S    以semkey删除信号灯

-s    以semid删除信号灯




设定HP-UX的核心环境,对核心环境进行管理。但修改后不能立即对核心参数进行管理。
因为系统会向boot.config读出参数,所以只有移走boot.config,然后再用getkinfo
重建boot.config文件。在SAM--》Kernel configuration--> Parameter会自动运行
getkinfo 命令。

先修改/usr/conf/master.d/core-hpux:

*range maxfiles<=60000
*range maxfiles_lim<=60000

把/var/sam/boot.config文件mv成boot.config.bak

mv /var/sam/boot.config /var/sam/boot.config.bak

然后运行

/usr/sam/lbin/getkinfo -b

 

vmstat 是用来实时查看内存使用情况,反映的情况比用top直观一些.
如果直接使用,只能得到当前的情况,最好用个时间间隔来采集
vmstat T 其中T用具体的时间标示,单位是 秒 例如:vmstat 5 表格每隔5秒采集一次.
这样在刷新的时候就能比较系统的看到那个列不正常的
procs:
r-->;在运行队列中等待的进程数
b-->;在等待io的进程数
w-->;可以进入运行队列但被替换的进程

memoy
swap-->;现时可用的交换内存(k表示)
free-->;空闲的内存(k表示)

pages
re--》回收的页面
mf--》非严重错误的页面
pi--》进入页面数(k表示)
po--》出页面数(k表示)
fr--》空余的页面数(k表示)
de--》提前读入的页面中的未命中数
sr--》通过时钟算法扫描的页面

disk 显示每秒的磁盘操作。 s表示scsi盘,0表示盘号

fault 显示每秒的中断数
in--》设备中断
sy--》系统中断
cy--》cpu交换

cpu 表示cpu的使用状态
cs--》用户进程使用的时间
sy--》系统进程使用的时间
id--》cpu空闲的时间


其中:
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。

 

ipcs命令和ipcrm命令
===========================================================
作者: edeed(http://edeed.itpub.net)
发表于:2007.04.27 17:11
分类: Unix
出处:http://edeed.itpub.net/post/679/283978
---------------------------

ipcs:check the shared memory allocation on a system
ipcrm:manually deallocate shared memory on a system
取得ipc信息:
ipcs [-m|-q|-s]
-m 输出有关共享内存(shared memory)的信息
-q 输出有关信息队列(message queue)的信息
-s 输出有关“遮断器”(semaphore)的信息
# ipcs -m
IPC status from <running system> 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
#ipcs |grep oracle|awk '{print $2}
501

删除ipc(清除共享内存信息)
ipcrm -m|-q|-s shm_id
%ipcrm -m 501
for 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

如何删除共享内存段?

问题描述

如何删除一个正处于删除暂停状态的全局共享内存段?

背景信息:

全局共享内存段正处于删除暂停状态:

# ipcs -mob | grep D
T      ID     KEY        MODE        OWNER GROUP NATTCH  SEGSZ
m   58382 0x00000000 D-rw-r-----   doracle dba     2 270606336

但是,shminfo 工具显示没有人在使用该段:

# ./shminfo -s 58382
libp4 (7.120): Opening /stand/vmunix /dev/kmem

从 /stand/vmunix 安装符号

shminfo (3.8)

Shmid 58382:
struct shmid_ds at 0x9dbd80
Pseudo vas at 0x68f84d00
Pseudo pregion at 0x9e296300
Shared region at 0xaf789c00
Segment at 0xf54c00.0xd7841000
Segment allocated out of "Global 32-bit quadrant 4"


使用SAM列出 Kernel参数与sysdef的比较


问题描述

我正在尝试确定为什么在 SAM 中看到的 Kernel 参数与运行
/usr/lbin/sysadm/system_prep -s system 时
生成的 "system" 文件存在差异。

例如,在 SAM 中我看到 "maxusers" 设置为了 32,但是
在 "system" 文件中却没有列出该参数。

SAM 使用的 "system’ 文件与在命令行手动创建新的 Kernel 时
system_prep 创建的 "system" 文件不同吗?

另外,为什么 sysdef 命令列出的 maxdsiz 和 maxdsz_64 值
与 SAM -> Kernel Configuration 中列出的值不同?

配置信息
10.X  11.X

解决方法

 system_prep

请运行下列命令:

       # /usr/lbin/sysadm/system_prep -s /tmp/system

       # more /tmp/system





unix/linux下的共享内存、信号量、队列信息管理
在unix/linux下,经常有因为共享内存、信号量,队列等共享信息没有干净地清楚而引起一些问题。
查看共享信息的内存的命令是ipcs [-m|-s|-q]。

默认会列出共享内存、信号量,队列信息,-m列出共享内存,-s列出共享信号量,-q列出共享队列
清除命令是ipcrm [-m|-s|-q] id。
-m 删除共享内存,-s删除共享信号量,-q删除共享队列。[oracle@trade_as02 ~]$ ipcs -a
 
------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status     
0x30024289 32768      futures   777        528384     1                      
0xca2fd414 491521     oracle    640        1730150400 16                     
 
------ Semaphore Arrays --------
key        semid      owner      perms      nsems    
0x00028009 0          futures   666        1        
0x0002800c 32769      futures   666        1        
0x30024003 262146     futures   777        3        
0x3002428a 294915     futures   777        2        
0x3002428b 327684     futures   777        2        
0x3002428c 360453     futures   777        2        
0x3002428d 393222     futures   777        2        
0x3002428e 425991     futures   777        2        
0x52dff7d0 3964936    oracle    640        151      
0x52dff7d1 3997705    oracle    640        151      
0x52dff7d2 4030474    oracle    640        151      
0x52dff7d3 4063243    oracle    640        151      
0x52dff7d4 4096012    oracle    640        151      
 
------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages共享内存段有时不能马上删除,需使用这个内存段的所有进程向OS发送detach命令时才有释放,此时可以考虑删除进程使用的信号量,帮助释放共享内存段   关键知识:信号量、资源释放、ipcs、ipcrm信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况;共享内存是运行在同一台机器上的间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。在Linux系统下常用的方式是通过shmXXX函数族来实现利用共享内存进行存储的。Shmget,类似于 malloc函数相关知识:
ipcs可用来显示当前Linux系统中的共享内存段、信号量集、消息队列等的使用情况。
命令示例:
ipcs -a或ipc显示当前系统中共享内存段、信号量集、消息队列的使用情况;
ipcs -m 显示共享内存段的使用情况;
ipcs -s 显示信号量集的使用情况;
ipcs -q 显示消息队列的使用情况;
ipcrm可用来删除对应的共享内存段、信号量、消息队列;
命令示例:
ipcrm -s semid 删除对应的信号量集
ipcrm -m shmid 删除对应的共享内存段
ipcrm -q msqid 删除对应的消息队列
ipcrm本身只能实现单个资源的删除,利用以下命令可实现批量删除(zhangsj版权所有,呵呵):
1.ipcs -s|grep 用户名|cut -d" " -f2|xargs -n1 ipcrm -s
2.ipcs -s|awk '/用户名/{print $2}'|xargs -n1 ipcrm -s
3.ipcs -s|awk '/用户名/{system("ipcrm -s "$2)}'
4.for i in echo `ipcs|grep 用户名|cut -d" " -f2`; do ipcrm -s $i; done






具体的用法总结如下:

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指令,所以在编写跨平台的脚本时,需要注意这个问题。


热点排行