|
@@ -0,0 +1,47 @@
|
|
|
+#!/bin/bash
|
|
|
+#
|
|
|
+# Process watchdog timer daemon: monitor the processes to ensure the applications are running
|
|
|
+#
|
|
|
+
|
|
|
+CONF_FILE="/etc/proc-wdtd.conf"
|
|
|
+
|
|
|
+# check if the configure file exists
|
|
|
+if [[ -f ${CONF_FILE} ]]; then
|
|
|
+ echo "proc-wdtd: load configure file '${CONF_FILE}'"
|
|
|
+else
|
|
|
+ echo "proc-wdtd: ERROR: can not find file '${CONF_FILE}'"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# load configuration
|
|
|
+CONF=$(cat ${CONF_FILE} 2>/dev/null | sed 's/#.*//' | \
|
|
|
+ sed 's/^[[:blank:]]*//' | sed 's/[[:blank:]]*$//' | sed '/^$/d' | \
|
|
|
+ sed 's/[[:blank:]]*=[[:blank:]]*/=/')
|
|
|
+
|
|
|
+# get application name list
|
|
|
+APPS=$(echo "${CONF}" | awk -F'=' '{print$1}')
|
|
|
+
|
|
|
+sleep 60
|
|
|
+while true; do
|
|
|
+ for app in ${APPS}; do
|
|
|
+ # check native program
|
|
|
+ pid=$(pidof ${app})
|
|
|
+ if [[ "${pid}" != "" ]]; then
|
|
|
+ echo "proc-wdtd: '${app}' is running (${pid})"
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+ # check python script
|
|
|
+ pid=$(ps aux | grep python | grep -v grep | grep ${app} | awk '{print$1}')
|
|
|
+ if [[ "${pid}" != "" ]]; then
|
|
|
+ echo "proc-wdtd: '${app}' python script is running (${pid})"
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+ # the program is not running, execute the command to lunch it
|
|
|
+ echo "proc-wdtd: '${app}' is not running"
|
|
|
+ cmd=$(echo "${CONF}" | grep "^${app}=" | head -n 1 | \
|
|
|
+ cut -d "=" -s -f2- | sed 's/^"//' | sed 's/"$//')
|
|
|
+ echo "proc-wdtd: execute command '${cmd}'"
|
|
|
+ ${cmd} &>/dev/null &
|
|
|
+ done
|
|
|
+ sleep 60
|
|
|
+done
|