#!/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