2013-05-26 115 views
0

我使用特定的perm“644”分配了一些共享的内存和消息队列。使用ipcrm删除共享内存

手动删除它们是一个辛勤工作,所以我想知道我怎么可以删除所有的行与该特定烫发644

------

共享内存细分--- ----- 键的shmid所有者烫发字节nattch状态
00000000 0尼600 33554432 2 DEST
00000000 229377尼644 52 0

------信号量阵列-------- 键semid的所有者烫发nsems

------消息队列-------- 将对msqid键所有者烫发使用字节消息
0x2731af4c 262144尼644 840 30
0x0756d9c1 294913尼644 16380 585
0x2d1b2cc7 327682尼644 0 0
0x343dccc1 360451尼644 0 0

感谢。

回答

0

你必须使用一个脚本来完成它,例如

#!/bin/bash 

m=`ipcs -m | grep -w 644 | cut -d' ' -f2` 
for i in $m 
do 
     echo removing shm id $i 
     ipcrm -m $i 
done 

s=`ipcs -s | grep -w 644 | cut -d' ' -f2` 
for i in $s 
do 
     echo removing sem id $i 
     ipcrm -s $i 
done 

q=`ipcs -q | grep -w 644 | cut -d' ' -f2` 
for i in $q 
do 
     echo removing queue id $i 
     ipcrm -q $i 
done 
0
ipcs -a | awk '{ \ 
    if ($3=="Memory") ARG="-m"; \ 
    if ($3=="Semaphore") ARG="-s"; \ 
    if ($3=="Message") ARG="-m"; \ 
    if ($4=="644")  system ("ipcrm "ARG" "$2""); \ 
    }'