Last active
August 29, 2015 14:03
-
-
Save deric/e31a160464bf2979f1d5 to your computer and use it in GitHub Desktop.
graphite-api init.d script debian
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/sh | |
### BEGIN INIT INFO | |
# Provides: graphite-api | |
# Required-Start: $remote_fs $syslog | |
# Required-Stop: $remote_fs $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: graphite api init script | |
# Description: An init script for Graphite's API daemon. | |
### END INIT INFO | |
# | |
# Enable with update-rc.d carbon-cache defaults | |
# Source init-functions: | |
#source /lib/lsb/init-functions | |
. /lib/lsb/init-functions | |
# PATH should only include /usr/* if it runs after the mountnfs.sh script | |
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | |
# Name of executable daemon | |
NAME=graphite-api | |
DESC=graphite-api | |
# Path to Executable | |
DAEMON=`which gunicorn` | |
# NOTE: This is a hard-coded PID file, based on carbon-cache.py. If you have more the one carbon-cache | |
# instance running on this machine, you'll need to figure out a better way to calculate the PID file. | |
PIDFILE=/var/run/graphite-api.pid | |
SCRIPTNAME=/etc/init.d/$NAME | |
# Exit if the package is not installed | |
if [ ! -x "$DAEMON" ]; then { | |
echo "Couldn't find $DAEMON or not executable" | |
exit 99 | |
} | |
fi | |
USER="www-data" | |
PORT=8000 | |
CMD="-b 0.0.0.0:$PORT -w 2 --log-level debug graphite_api.app:app >>/var/log/graphite/graphite-api.log 2>&1" | |
# Load the VERBOSE setting and other rcS variables | |
[ -f /etc/default/rcS ] && . /etc/default/rcS | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
# Test to see if the daemon is already running - return 1 if it is. | |
start-stop-daemon --start --pidfile $PIDFILE --chuid $USER \ | |
--exec $DAEMON --test -- start > /dev/null || return 1 | |
start-stop-daemon --start --background --quiet --chuid $USER \ | |
--pidfile "$PIDFILE" --make-pidfile \ | |
--startas /bin/bash -- -c "exec $DAEMON $CMD" | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() { | |
# Return | |
# 0 if daemon has been stopped | |
# 1 if daemon was already stopped | |
# 2 if daemon could not be stopped | |
# other if a failure occurred | |
log_daemon_msg "Stopping $DESC" "$NAME" | |
start-stop-daemon --stop --signal 2 --retry 5 --quiet --pidfile $PIDFILE | |
RETVAL="$?" | |
[ "$RETVAL" = 2 ] && return 2 | |
# Delete the exisitng PID file | |
if [ -e "$PIDFILE" ]; then { | |
rm $PIDFILE | |
} | |
fi | |
return "$RETVAL" | |
} | |
# Display / Parse Init Options | |
case "$1" in | |
start) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" | |
do_start | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; | |
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; | |
esac | |
;; | |
restart) | |
log_daemon_msg "Restarting $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; # Old process is still running | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
status) | |
if [ -s $PIDFILE ]; then | |
pid=`cat $PIDFILE` | |
kill -0 $pid >/dev/null 2>&1 | |
if [ "$?" = "0" ]; then | |
echo "$NAME is running: pid $pid." | |
RETVAL=0 | |
else | |
echo "Couldn't find pid $pid for $NAME." | |
RETVAL=1 | |
fi | |
else | |
echo "$NAME is stopped (no pid file)." | |
RETVAL=1 | |
fi | |
;; | |
*) | |
echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2 | |
exit 3 | |
;; | |
esac | |
: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment