You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.4 KiB

#!/bin/sh
DAEMON=/usr/bin/tera-alarmd
PIDFILE=/run/tera-alarmd.pid
ENVFILE=/etc/tera/tera-alarmd.env
ensure_group() {
if ! grep -q '^tera:' /etc/group; then
addgroup -S tera || return 1
fi
}
ensure_user() {
ensure_group || return 1
if ! grep -q '^tera:' /etc/passwd; then
adduser -S -D -H -s /sbin/nologin -G tera tera || return 1
fi
}
prepare_directories() {
ensure_user || return 1
mkdir -p /run/tera-alarmd /var/lib/tera-alarmd || return 1
chown tera:tera /run/tera-alarmd /var/lib/tera-alarmd || return 1
chmod 0750 /run/tera-alarmd /var/lib/tera-alarmd || return 1
}
load_environment() {
if [ -r "$ENVFILE" ]; then
set -a
. "$ENVFILE"
set +a
fi
}
is_running() {
[ -r "$PIDFILE" ] || return 1
pid="$(cat "$PIDFILE" 2>/dev/null)"
[ -n "$pid" ] && kill -0 "$pid" 2>/dev/null
}
start_service() {
if is_running; then
echo "tera-alarmd is already running"
return 0
fi
rm -f "$PIDFILE"
[ -x "$DAEMON" ] || { echo "missing $DAEMON" >&2; return 1; }
prepare_directories || return 1
load_environment
umask 0007
start-stop-daemon -S -q -b -m -p "$PIDFILE" -c tera:tera -x "$DAEMON"
}
stop_service() {
if ! is_running; then
rm -f "$PIDFILE"
return 0
fi
start-stop-daemon -K -q -p "$PIDFILE" -x "$DAEMON"
rm -f "$PIDFILE"
}
case "$1" in
start) start_service ;;
stop) stop_service ;;
restart) stop_service && start_service ;;
status) is_running ;;
*) echo "Usage: $0 {start|stop|restart|status}" >&2; exit 1 ;;
esac