diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
commit | 6c3ea4f47ea280811a7fe53a22f7832e4533c9ec (patch) | |
tree | 3d7ed5da23b5dbf6f9e450dfb61642832249c31e /etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh | |
parent | Adding upstream version 1:4.13+dfsg1. (diff) | |
download | shadow-upstream/1%4.15.2.tar.xz shadow-upstream/1%4.15.2.zip |
Adding upstream version 1:4.15.2.upstream/1%4.15.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh')
-rw-r--r-- | etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh b/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh new file mode 100644 index 0000000..10db527 --- /dev/null +++ b/etc/shadow-maint/groupdel-pre.d/01-kill_group_procs.sh @@ -0,0 +1,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 + |