0

我正在分配一些具有特定权限“644”的共享内存和消息队列。

手动删除它们是一项艰巨的工作,所以我想知道如何使用特定的 perm 644 删除所有行。

例如

------ 共享内存段 -------- key shmid owner perms bytes nattch status
0x00000000 0 benny 600 33554432 2 dest
0x00000000 229377 benny 644 52 0

------ 信号量数组 -------- key semid owner perms nsems

------ 消息队列 -------- key msqid owner perms used-bytes messages
0x2731af4c 262144 benny 644 840 30
0x0756d9c1 294913 benny 644 16380 585
0x2d1b2cc7 327682 benny 644 0 0
0x343dccc1 306041 benny 644

谢谢。

4

2 回答 2

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""); \
  }'
于 2014-10-10T15:18:22.343 回答
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
于 2013-05-31T09:50:51.287 回答