summaryrefslogtreecommitdiffstats
path: root/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh
blob: 10db5279437eea458c936d18ae255aa05f3f66fb (plain)
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
#!/bin/sh

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
GROUPID=`awk -F: '$1 == "'"${SUBJECT}"'" { print $3 }' /etc/group`

if [ "${GROUPID}" = "" ]; then
    exit 0
fi

for status in /proc/*/status; do
    # either this isn't a process or its already dead since expanding the list
    [ -f "$status" ] || continue

    tbuf=${status%/status}
    pid=${tbuf#/proc/}
    case "$pid" in
        "$$") continue;;
        [0-9]*) :;;
        *) continue
    esac
    
    grep -q '^Groups:.*\b'"${GROUPID}"'\b.*' "/proc/$pid/status" || continue

    kill -9 "$pid" || echo "cannot kill $pid" 1>&2
done