-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclean.bash
More file actions
64 lines (56 loc) · 1.33 KB
/
clean.bash
File metadata and controls
64 lines (56 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/bash
#
# Bash script to remove IPC facilities for the current user.
# Supports:
# -q remove message queues
# -s remove semaphores
# -m remove shared memory
# -a remove all IPC facilities
#
usage() {
echo "Usage: $0 {-q | -s | -m | -a}"
echo " -q remove message queues"
echo " -s remove semaphores"
echo " -m remove shared memory segments"
echo " -a remove all IPC facilities"
exit 1
}
# Must provide exactly ONE argument
if [ $# -ne 1 ]; then
usage
fi
option="$1"
remove_ipc() {
local type="$1" # q, s, or m
local name="$2" # message queue, semaphore, shared memory
list=$(ipcs -$type | grep "$USER" | awk '{print $2}')
count=0
for id in $list; do
case "$type" in
q) ipcrm msg "$id" >/dev/null ;;
s) ipcrm sem "$id" >/dev/null ;;
m) ipcrm shm "$id" >/dev/null ;;
esac
((count++))
done
echo "$count $name(s) for $USER removed"
}
case "$option" in
-q)
remove_ipc q "message queue"
;;
-s)
remove_ipc s "semaphore"
;;
-m)
remove_ipc m "shared memory segment"
;;
-a)
remove_ipc q "message queue"
remove_ipc s "semaphore"
remove_ipc m "shared memory segment"
;;
*)
usage
;;
esac