#! /bin/sh | |
### BEGIN INIT INFO | |
# Provides: glances | |
# Required-Start: $remote_fs $local_fs $network | |
# Required-Stop: $remote_fs $local_fs $network | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Starts and daemonize Glances server | |
# Description: Starts and daemonize Glances server | |
### END INIT INFO | |
# PATH should only include /usr/* if it runs after the mountnfs.sh script | |
PATH=/sbin:/usr/sbin:/bin:/usr/bin | |
DESC="Glances server" | |
NAME=glances | |
USER=$NAME | |
DAEMON="/usr/bin/$NAME" | |
PIDFILE="/run/$NAME/$NAME.pid" | |
CONF="/etc/glances/glances.conf" | |
DAEMON_ARGS="-C $CONF -s" | |
# Exit if the package is not installed | |
[ -x "$DAEMON" ] || exit 0 | |
# Read configuration variable file if it is present | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
# Load the VERBOSE setting and other rcS variables | |
. /lib/init/vars.sh | |
# Define LSB log_* functions. | |
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present | |
# and status_of_proc is working. | |
. /lib/lsb/init-functions | |
# Ensure /run/glances is there, cf. Debian policy 9.4.1 | |
# http://www.debian.org/doc/debian-policy/ch-opersys.html#s-fhs-run | |
if [ ! -d "$(dirname $PIDFILE)" ]; then | |
mkdir "$(dirname $PIDFILE)" | |
chown $USER:$USER "$(dirname $PIDFILE)" | |
chmod 755 "$(dirname $PIDFILE)" | |
fi | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
log_daemon_msg "Starting $DESC" "$NAME " | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
[ -e $PIDFILE ] && PID=$(cat "$PIDFILE") | |
if ( [ -e $PIDFILE ] && ps -p $PID 1>&2 > /dev/null ) | |
then | |
log_action_end_msg 1 "already running, PID's $PID" | |
exit 0 | |
elif ( [ -w $PIDFILE ] ) | |
then | |
log_warning_msg "PID file found while ${NAME} is not running, removing file." | |
rm $PIDFILE | |
fi | |
if [ "$RUN" != "true" ]; then | |
log_action_msg "Not starting glances: disabled by /etc/default/$NAME". | |
exit 0 | |
fi | |
start-stop-daemon --start --chuid $USER --pidfile=$PIDFILE --quiet -m -b --exec $DAEMON -- $DAEMON_ARGS || return 2 | |
[ -e "$PIDFILE" ] && chown $USER $PIDFILE | |
return 0 | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() | |
{ | |
log_daemon_msg "Stopping $DESC" "$NAME " | |
if [ ! -w $PIDFILE ] | |
then | |
log_warning_msg "PID file not found" | |
return 4 | |
fi | |
start-stop-daemon --stop --oknodo --chuid $USER --pidfile=$PID --user=$USER --pidfile="$PIDFILE" --retry=30 || return 1 | |
/bin/rm -f $PIDFILE | |
return 0 | |
} | |
case "$1" in | |
start) | |
do_start | |
case "$?" in | |
0|1) log_end_msg 0 ;; | |
2) log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
do_stop | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; | |
esac | |
;; | |
status) | |
status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" | |
;; | |
restart|force-reload) | |
do_stop | |
case "$?" in | |
0) | |
log_end_msg 0 | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
*) | |
echo "Usage: invoke-rc.d $NAME {start|stop|status|restart|force-reload}" >&2 | |
exit 3 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment