first commit
This commit is contained in:
62
etc_org/init.d/killprocs
Executable file
62
etc_org/init.d/killprocs
Executable file
@ -0,0 +1,62 @@
|
||||
#! /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
|
Reference in New Issue
Block a user