aboutsummaryrefslogtreecommitdiff
path: root/functions
diff options
context:
space:
mode:
Diffstat (limited to 'functions')
-rw-r--r--functions31
1 files changed, 31 insertions, 0 deletions
diff --git a/functions b/functions
index 3fc6fa9..84fed85 100644
--- a/functions
+++ b/functions
@@ -202,6 +202,37 @@ ck_status() {
fi
}
+kill_everything() {
+ # $1 = where we are being called from.
+ # This is used to determine which hooks to run.
+ # Find daemons NOT in the DAEMONS array. Shut these down first
+ for daemon in /var/run/daemons/*; do
+ [[ -f $daemon ]] || continue
+ daemon=${daemon##*/}
+ in_array "$daemon" "${DAEMONS[@]}" || stop_daemon "$daemon"
+ done
+
+ # Shutdown daemons in reverse order
+ for ((i=${#DAEMONS[@]}-1; i>=0; i--)); do
+ [[ ${DAEMONS[$i]:0:1} = '!' ]] && continue
+ ck_daemon ${DAEMONS[$i]#@} || stop_daemon ${DAEMONS[$i]#@}
+ done
+
+ # Terminate all processes
+ stat_busy "Sending SIGTERM To Processes"
+ run_hook "$1_prekillall"
+ /sbin/killall5 -15 &> /dev/null
+ /bin/sleep 5
+ stat_done
+
+ stat_busy "Sending SIGKILL To Processes"
+ /sbin/killall5 -9 &> /dev/null
+ /bin/sleep 1
+ stat_done
+
+ run_hook "$1_postkillall"
+}
+
###############################
# Custom hooks in initscripts #
###############################