init_script 3.2 KB
Newer Older
A
Adrien Beudin 已提交
1 2
#! /bin/sh
### BEGIN INIT INFO
A
Adrien Beudin 已提交
3
# Provides:          glances
4 5
# Required-Start:    $remote_fs $local_fs $network
# Required-Stop:     $remote_fs $local_fs $network
A
Adrien Beudin 已提交
6 7
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
8 9
# Short-Description: Starts and daemonize Glances server
# Description:       Starts and daemonize Glances server
A
Adrien Beudin 已提交
10 11 12 13 14
### END INIT INFO


# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
A
Adrien Beudin 已提交
15 16
DESC="Glances server"
NAME=glances
17 18 19 20 21
USER=$NAME
DAEMON="/usr/bin/$NAME"
PIDFILE="/run/$NAME/$NAME.pid"
CONF="/etc/glances/glances.conf"
DAEMON_ARGS="-C $CONF -s"
A
Adrien Beudin 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

# 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

37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
# 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
A
Adrien Beudin 已提交
65

66 67 68 69
    if [ "$RUN" != "true" ]; then
        log_action_msg "Not starting glances: disabled by /etc/default/$NAME".
        exit 0
    fi
A
Adrien Beudin 已提交
70

71 72 73 74
    start-stop-daemon --start --chuid $USER --pidfile=$PIDFILE --quiet -m -b --exec $DAEMON -- $DAEMON_ARGS || return 2
    [ -e "$PIDFILE" ] && chown $USER $PIDFILE
    return 0
}
A
Adrien Beudin 已提交
75

76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
#
# 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
}
A
Adrien Beudin 已提交
91

92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
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