2013-05-26 85 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""); \ 
    }'