49 lines
1.0 KiB
Bash
49 lines
1.0 KiB
Bash
#!/bin/sh
|
|
|
|
shutdown() {
|
|
echo "shutting down container"
|
|
|
|
# first shutdown any service started by runit
|
|
for _srv in $(ls -1 /etc/service); do
|
|
sv force-stop $_srv
|
|
done
|
|
|
|
# shutdown runsvdir command
|
|
kill -HUP $RUNSVDIR
|
|
wait $RUNSVDIR
|
|
|
|
# give processes time to stop
|
|
sleep 0.5
|
|
|
|
# kill any other processes still running in the container
|
|
for _pid in $(ps -eo pid | grep -v PID | tr -d ' ' | grep -v '^1$' | head -n -6); do
|
|
timeout -t 5 /bin/sh -c "kill $_pid && wait $_pid || kill -9 $_pid"
|
|
done
|
|
exit
|
|
}
|
|
|
|
# store enviroment variables
|
|
export > /etc/envvars
|
|
|
|
PATH=/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
|
|
|
|
# run all scripts in the run_once folder
|
|
#/bin/run-parts /etc/run_once
|
|
|
|
exec runsvdir -P /etc/service &
|
|
|
|
RUNSVDIR=$!
|
|
echo "Started runsvdir, PID is $RUNSVDIR"
|
|
echo "wait for processes to start...."
|
|
|
|
sleep 5
|
|
for _srv in $(ls -1 /etc/service); do
|
|
sv status $_srv
|
|
done
|
|
|
|
# catch shutdown signals
|
|
trap shutdown SIGTERM SIGHUP SIGQUIT SIGINT
|
|
wait $RUNSVDIR
|
|
|
|
shutdown
|