Created
December 18, 2011 04:39
-
-
Save chalmerj/1492384 to your computer and use it in GitHub Desktop.
Init script for Graphite carbon-cache
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: carbon-cache | |
# Required-Start: $remote_fs $syslog | |
# Required-Stop: $remote_fs $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: carbon-cache init script | |
# Description: An init script for Graphite's carbon-cache daemon. | |
### END INIT INFO | |
# Author: Jeremy Chalmer | |
# | |
# This init script was written for Ubuntu 11.10 using start-stop-daemon. | |
# | |
# Note: Make sure you set the USER field in /opt/graphite/conf/carbon.conf to be the same | |
# user that owns the /opt/graphite/storage/ folder. Carbon-cache will be invoked as that | |
# username on start. | |
# | |
# 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 | |
# Path to Graphite | |
GRAPHITE_HOME=/opt/graphite | |
# Name of executable daemon | |
NAME=carbon-cache | |
DESC=carbon-cache | |
#Carbon has its own logging facility, by default in /opt/graphite/storage/log/carbon-cache-* | |
# Path to Executable | |
DAEMON=$GRAPHITE_HOME/bin/carbon-cache.py | |
# 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=/opt/graphite/storage/carbon-cache-a.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 | |
# 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 \ | |
--exec $DAEMON --test -- start > /dev/null || return 1 | |
# Start the daemon for real, return 2 if failed | |
start-stop-daemon --start --pidfile $PIDFILE \ | |
--exec $DAEMON -- start > /dev/null || return 2 | |
} | |
# | |
# 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