47 lines
1.3 KiB
Bash
Executable File
47 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# adapted from https://github.com/discourse/discourse_docker/blob/master/image/base/boot
|
|
# this script becomes PID 1 inside the container, catches termination signals, and stops
|
|
# processes managed by runit
|
|
|
|
if [ -z "$(ls -A /opt/nagios/etc)" ]; then
|
|
echo "Started with empty ETC, copying example data in-place"
|
|
cp -Rp /orig/etc/* /opt/nagios/etc/
|
|
fi
|
|
|
|
if [ -z "$(ls -A /opt/nagios/var)" ]; then
|
|
echo "Started with empty VAR, copying example data in-place"
|
|
cp -Rp /orig/var/* /opt/nagios/var/
|
|
fi
|
|
|
|
if [ ! -f "${NAGIOS_HOME}/etc/htpasswd.users" ] ; then
|
|
htpasswd -c -b -s "${NAGIOS_HOME}/etc/htpasswd.users" "${NAGIOSADMIN_USER}" "${NAGIOSADMIN_PASS}"
|
|
chown -R ${NAGIOS_USER}.${NAGIOS_GROUP} "${NAGIOS_HOME}/etc/htpasswd.users"
|
|
fi
|
|
|
|
shutdown() {
|
|
echo Shutting Down
|
|
ls /etc/service | SHELL=/bin/sh parallel --no-notice sv force-stop {}
|
|
if [ -e "/proc/${RUNSVDIR}" ]; then
|
|
kill -HUP "${RUNSVDIR}"
|
|
wait "${RUNSVDIR}"
|
|
fi
|
|
|
|
# give stuff a bit of time to finish
|
|
sleep 1
|
|
|
|
ORPHANS=$(ps -eo pid= | tr -d ' ' | grep -Fxv 1)
|
|
SHELL=/bin/bash parallel --no-notice 'timeout 5 /bin/bash -c "kill {} && wait {}" || kill -9 {}' ::: "${ORPHANS}" 2> /dev/null
|
|
exit
|
|
}
|
|
|
|
exec runsvdir -P /etc/service &
|
|
RUNSVDIR=$!
|
|
echo "Started runsvdir, PID is ${RUNSVDIR}"
|
|
|
|
trap shutdown SIGTERM SIGHUP SIGINT
|
|
wait "${RUNSVDIR}"
|
|
|
|
shutdown
|
|
|