Удаление общих воспоминаний с ipcrm
Я распределяю некоторые общие воспоминания и очереди сообщений с определенной разрешающей способностью "644".
Удаление их вручную - сложная работа, поэтому я хочу знать, как удалить все строки с этой конкретной перми 644.
например
------ Сегменты общей памяти -------- владелец ключа shmid perms byts состояние nattch
0x00000000 0 Бенни 600 33554432 2 дест
0x00000000 229377 Бенни 644 52 0
------ Массивы семафоров -------- владелец ключа semid perms nsems
------ Очереди сообщений -------- ключ msqid владелец perms используемые байты сообщений
0x2731af4c 262144 Бенни 644 840 30
0x0756d9c1 294913 Бенни 644 16380 585
0x2d1b2cc7 327682 Бенни 644 0 0
0x343dccc1 360451 Бенни 644 0 0
Благодарю.
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
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""); \
}'