OpenMTC/openmtc-gevent/etc/init.d/openmtc-backend
2017-11-07 14:41:38 +01:00

107 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
### BEGIN INIT INFO
# Provides: openmtc-backend
# Required-Start: $local_fs $network ntp
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: openmtc Network Service Capability Layer
### END INIT INFO
set -e
# /etc/init.d/openmtc-backend: start and stop the openmtc Backend
NAME="OpenMTC Backend"
DAEMON=/usr/local/bin/openmtc-backend-gevent
PID_FILE=/var/run/openmtc-backend.pid
CREDENTIALS=openmtc:openmtc
MAX_RETRIES=3
MAX_SLEEP=30
test -x || exit 0
. /lib/lsb/init-functions
openmtc_start() {
if ! /usr/sbin/ntpdate -u de.pool.ntp.org > /dev/null 2>&1; then
log_warning_msg "Could not sync time."\
"Consider setting the time manually."
fi
if start-stop-daemon --start --quiet --background --pidfile "${PID_FILE}" --make-pidfile --exec "${DAEMON}"
then
rc=0
counter=0
while [ ${counter} -lt ${MAX_SLEEP} ]; do
rc=1
if [ $(netstat -tulpen | grep $(cat ${PID_FILE})/python | wc -l) -gt 0 ]; then
rc=0
break
fi
counter=$((counter+1))
sleep 1
done
if ! kill -0 `cat "${PID_FILE}"` >/dev/null 2>&1; then
log_failure_msg " failed to start"
rm -f "${PID_FILE}"
rc=1
fi
else
rc=1
fi
if [ "${rc}" -eq 0 ]; then
log_end_msg 0
else
log_end_msg 1
rm -f "${PID_FILE}"
fi
}
case "$1" in
start)
log_daemon_msg "Starting " "${NAME}"
if [ -s "${PID_FILE}" ] && kill -0 `cat "${PID_FILE}"` >/dev/null 2>&1; then
log_progress_msg "${NAME} apparently already running."
log_end_msg 0
exit 0
fi
openmtc_start
;;
stop)
log_daemon_msg "Stopping " "${NAME}"
start-stop-daemon --stop --signal INT --quiet --oknodo --pidfile "${PID_FILE}"
log_end_msg 0
rm -f "${PID_FILE}"
;;
restart)
set +e
log_daemon_msg "Restarting " "${NAME}"
if [ -s "${PID_FILE}" ] && kill -0 `cat "${PID_FILE}"` >/dev/null 2>&1; then
start-stop-daemon --stop --signal INT --quiet --oknodo --pidfile "${PID_FILE}" || true
sleep 1
else
log_warning_msg "${NAME} not running, attempting to start."
rm -f "${PID_FILE}"
fi
openmtc_start
;;
status)
status_of_proc -p "${PID_FILE}" "${DAEMON}" "${NAME}"
if [ $? -eq 0 ]; then
if [ $(netstat -tulpen | grep $(cat ${PID_FILE})/python | wc -l) -gt 0 ]; then
log_success_msg "${NAME} port is reachable"
exit 0 # notreached due to set -e
fi
log_failure_msg "${NAME} port not reachable."
exit 1
fi
;;
*)
echo "Usage: /etc/init.d/openmtc-backend {start|stop|restart|status}"
exit 1
esac
exit 0