【问题标题】:removing shared memories with ipcrm使用 ipcrm 删除共享内存
【发布时间】:2013-05-21 16:20:09
【问题描述】:

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

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

例如

----- 共享内存段 -------- 密钥 shmid 所有者 perms 字节 nattch 状态
0x00000000 0 本尼 600 33554432 2 目标
0x00000000 229377 本尼 644 52 0

-------- 信号量数组 -------- key semid 所有者 perms nsems

-------- 消息队列-------- 密钥 msqid 所有者许可已用字节消息
0x2731af4c 262144 本尼 644 840 30
0x0756d9c1 294913 本尼 644 16380 585
0x2d1b2cc7 327682 本尼 644 0 0
0x343dccc1 360451 本尼 644 0 0

谢谢。

【问题讨论】:

    标签: linux ipcs


    【解决方案1】:
    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""); \
      }'
    

    【讨论】:

      【解决方案2】:

      您必须使用脚本来执行此操作,例如

      #!/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
      

      【讨论】:

        猜你喜欢
        • 2010-09-28
        • 2013-03-14
        • 2012-11-02
        • 1970-01-01
        • 2012-03-20
        • 2018-10-03
        • 1970-01-01
        • 1970-01-01
        • 2013-10-04
        相关资源
        最近更新 更多