From 35b88fb42bb8e0a56cdc1947342f1b89c98658bc Mon Sep 17 00:00:00 2001 From: Patrick McLean Date: Wed, 25 Oct 2017 21:19:15 -0500 Subject: cgroups_cleanup: clean up shutdown signaling - do not sleep for the full 90 seconds if processes are dead - re-arrange the order of signals we attempt to send to the processes --- sh/rc-cgroup.sh.in | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'sh') diff --git a/sh/rc-cgroup.sh.in b/sh/rc-cgroup.sh.in index d48957ac..5bc7db54 100644 --- a/sh/rc-cgroup.sh.in +++ b/sh/rc-cgroup.sh.in @@ -203,15 +203,21 @@ cgroup_cleanup() { cgroup_running || return 0 ebegin "starting cgroups cleanup" - local pids + local pids loops=0 pids="$(cgroup_get_pids)" if [ -n "${pids}" ]; then - kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null kill -s CONT ${pids} 2> /dev/null + kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null yesno "${rc_send_sighup:-no}" && kill -s HUP ${pids} 2> /dev/null - sleep "${rc_timeout_stopsec:-90}" - yesno "${rc_send_sigkill:-yes}" && + kill -s "${stopsig:-TERM}" ${pids} 2> /dev/null + while [ -n "$(cgroup_get_pids)" ] && + [ "${loops}" -lt "${rc_timeout_stopsec:-90}" ]; do + loops=$((loops+1)) + sleep 1 + done + pids="$(cgroup_get_pids)" + [ -n "${pids}" ] && yesno "${rc_send_sigkill:-yes}" && kill -s KILL ${pids} 2> /dev/null fi cgroup2_remove -- cgit v1.2.3