aboutsummaryrefslogtreecommitdiffstats
path: root/config/unbound/unbound_monitor.sh
diff options
context:
space:
mode:
Diffstat (limited to 'config/unbound/unbound_monitor.sh')
-rwxr-xr-xconfig/unbound/unbound_monitor.sh68
1 files changed, 48 insertions, 20 deletions
diff --git a/config/unbound/unbound_monitor.sh b/config/unbound/unbound_monitor.sh
index 152a308e..91e5a2ed 100755
--- a/config/unbound/unbound_monitor.sh
+++ b/config/unbound/unbound_monitor.sh
@@ -27,37 +27,65 @@
# POSSIBILITY OF SUCH DAMAGE.
#
+export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
+
set -e
LOOP_SLEEP=5
+PIDFILE=/var/run/unbound_monitor.pid
if [ -f /var/run/unbound_alarm ]; then
rm /var/run/unbound_alarm
fi
+PID=""
+if [ -f "${PIDFILE}" ]; then
+ PID=`head -n 1 ${PIDFILE}`
+fi
+
+if [ "$1" = "stop" ]; then
+ if [ -n "${PID}" ] && ps -p ${PID} | grep -q unbound_monitor.sh; then
+ kill ${PID}
+ else
+ pkill -f unbound_monitor.sh
+ fi
+ exit 0
+fi
+
+if [ -n "${PID}" ] && ps -p ${PID} | grep -q unbound_monitor.sh; then
+ echo "There is another unbound monitor process running"
+ exit 0
+fi
+
+echo $$ > ${PIDFILE}
+
# Sleep 5 seconds on startup not to mangle with existing boot scripts.
sleep 5
-while [ /bin/true ]; do
- if [ ! -f /var/run/unbound_alarm ]; then
- NUM_PROCS=`/bin/pgrep unbound | wc -l | awk '{print $1}'`
- if [ $NUM_PROCS -lt 1 ]; then
- # Unbound is not running
- echo "Unbound has exited." | logger -p daemon.info -i -t Unbound_Alarm
- echo "Attempting restart..." | logger -p daemon.info -i -t Unbound_Alarm
- /usr/local/etc/rc.d/unbound.sh start
- sleep 3
- touch /var/run/unbound_alarm
- fi
- fi
- NUM_PROCS=`/bin/pgrep unbound | wc -l | awk '{print $1}'`
- if [ $NUM_PROCS -gt 0 ]; then
- if [ -f /var/run/unbound_alarm ]; then
- echo "Unbound has resumed." | logger -p daemon.info -i -t Unbound_Alarm
- rm /var/run/unbound_alarm
- fi
- fi
- sleep $LOOP_SLEEP
+while true; do
+ if [ ! -f "${PIDFILE}" ]; then
+ echo $$ > ${PIDFILE}
+ fi
+
+ if [ ! -f /var/run/unbound_alarm ]; then
+ NUM_PROCS=`pgrep unbound | wc -l | awk '{print $1}'`
+ if [ $NUM_PROCS -lt 1 ]; then
+ # Unbound is not running
+ echo "Unbound has exited." | logger -p daemon.info -i -t Unbound_Alarm
+ echo "Attempting restart..." | logger -p daemon.info -i -t Unbound_Alarm
+ /usr/local/etc/rc.d/unbound.sh start
+ sleep 3
+ touch /var/run/unbound_alarm
+ fi
+ fi
+ NUM_PROCS=`pgrep unbound | wc -l | awk '{print $1}'`
+ if [ $NUM_PROCS -gt 0 ]; then
+ if [ -f /var/run/unbound_alarm ]; then
+ echo "Unbound has resumed." | logger -p daemon.info -i -t Unbound_Alarm
+ rm /var/run/unbound_alarm
+ fi
+ fi
+ sleep $LOOP_SLEEP
done
if [ -f /var/run/unbound_alarm ]; then