Ubuntu などの UNIX 系システムで、使用されていないすべてのセマフォと共有メモリを 1 つのコマンドで削除するにはどうすればよいですか?
110360 次
11 に答える
65
ここで、シェルでこのスクリプト (kill_ipcs.sh) を保存して試してください。
#!/bin/bash
ME=`whoami`
IPCS_S=`ipcs -s | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_M=`ipcs -m | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
IPCS_Q=`ipcs -q | egrep "0x[0-9a-f]+ [0-9]+" | grep $ME | cut -f2 -d" "`
for id in $IPCS_M; do
ipcrm -m $id;
done
for id in $IPCS_S; do
ipcrm -s $id;
done
for id in $IPCS_Q; do
ipcrm -q $id;
done
大学生のサーバーで IPCS プログラムを実行するときは常にこれを使用します。一部の人々は常にクリーンアップするとは限らないので...必要です:P
于 2010-11-24T00:52:50.217 に答える
11
これは私のMac OSで動作します:
for n in `ipcs -b -m | egrep ^m | awk '{ print $2; }'`; do ipcrm -m $n; done
于 2012-11-26T13:16:59.300 に答える
9
ipcs -s | grep $USERNAME | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
また
ipcs -s | grep $USERNAME | awk ' { print $2 } ' | xargs ipcrm sem
$USERNAME を実際のユーザー名に変更します。
于 2010-06-29T14:02:11.167 に答える
9
#!/bin/bash
ipcs -m | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -m
ipcs -s | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -s
ipcs -q | grep `whoami` | awk '{ print $2 }' | xargs -n1 ipcrm -q
于 2016-08-01T17:01:53.833 に答える
7
一度にすべて削除する方法はわかりませんが、 を使用ipcs
してリソースを一覧表示してから、 loop を使用して で削除できますipcrm
。これは機能するはずですが、少し作業が必要です。私はクラスで一度それを機能させたことを覚えています。
于 2010-01-26T23:27:14.857 に答える
2
削除するものがあるかどうかを確認します:
ipcs -a | grep `whoami`
Linuxでは、次の方法でそれらをすべて削除します:
ipcs | nawk -v u=`whoami` '/Shared/,/^$/{ if($6==0&&$3==u) print "ipcrm shm",$2,";"}/Semaphore/,/^$/{ if($3==u) print "ipcrm sem",$2,";"}' | /bin/sh
太陽の場合は次のようになります。
ipcs -a | nawk -v u=`whoami` '$5==u &&(($1=="m" && $9==0)||($1=="s")){print "ipcrm -"$1,$2,";"}' | /bin/sh
di.uoa.grの礼儀
大丈夫かもう一度確認
sems/shared mem を削除するため - あなたが管理者権限のないワークステーションのユーザーであると仮定します
于 2012-04-20T13:51:24.897 に答える
1
これは私が FreeBSD で行う方法です:
#!/usr/local/bin/bash for i in $(ipcs -a | grep "^s" | awk '{ print $2 }'); 行う echo "ipcrm -s $i" ipcrm -s $i 終わり
于 2013-03-22T17:16:29.417 に答える