63 lines
1.3 KiB
Bash
Executable File
63 lines
1.3 KiB
Bash
Executable File
#! /bin/sh
|
|
### BEGIN INIT INFO
|
|
# Provides: killprocs
|
|
# Required-Start: $local_fs
|
|
# Required-Stop:
|
|
# Default-Start: 1
|
|
# Default-Stop:
|
|
# Short-Description: executed by init(8) upon entering runlevel 1 (single).
|
|
### END INIT INFO
|
|
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
|
|
. /lib/lsb/init-functions
|
|
|
|
do_start () {
|
|
# Kill all processes.
|
|
log_action_begin_msg "Asking all remaining processes to terminate"
|
|
killall5 -15 # SIGTERM
|
|
log_action_end_msg 0
|
|
alldead=""
|
|
for seq in 1 2 3 4 5 6 7 8 9 10; do
|
|
# use SIGCONT/signal 18 to check if there are
|
|
# processes left. No need to check the exit code
|
|
# value, because either killall5 work and it make
|
|
# sense to wait for processes to die, or it fail and
|
|
# there is nothing to wait for.
|
|
|
|
if killall5 -18 ; then
|
|
:
|
|
else
|
|
alldead=1
|
|
break
|
|
fi
|
|
|
|
sleep 1
|
|
done
|
|
if [ -z "$alldead" ] ; then
|
|
log_action_begin_msg "Killing all remaining processes"
|
|
killall5 -9 # SIGKILL
|
|
log_action_end_msg 1
|
|
else
|
|
log_action_begin_msg "All processes ended within $seq seconds."
|
|
log_action_end_msg 0
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
do_start
|
|
;;
|
|
restart|reload|force-reload)
|
|
echo "Error: argument '$1' not supported" >&2
|
|
exit 3
|
|
;;
|
|
stop|status)
|
|
# No-op
|
|
;;
|
|
*)
|
|
echo "Usage: $0 start|stop" >&2
|
|
exit 3
|
|
;;
|
|
esac
|