root@indy-librenms:/home/mhammett# cat /etc/init.d/rrdcached #!/bin/sh ### BEGIN INIT INFO # Provides: rrdcached # Required-Start: $local_fs $remote_fs $named $time $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start or stop rrdcached # Description: Daemon that accumulates updates to RRD files and flushes # them periodically or on command. ### END INIT INFO # PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=rrdcached DESC="RRD cache daemon" DAEMON=/usr/bin/rrdcached DEFAULT=/etc/default/rrdcached test -f ${DEFAULT} && . ${DEFAULT} PIDFILE=${PIDFILE:-/var/run/${NAME}.pid} RRDCACHED_OPTIONS="\\ ${BASE_OPTIONS} \\ ${NETWORK_OPTIONS} \\ ${WRITE_TIMEOUT:+-w ${WRITE_TIMEOUT}} \\ ${WRITE_JITTER:+-z ${WRITE_JITTER}} \\ ${WRITE_THREADS:+-t ${WRITE_THREADS}} \\ ${BASE_PATH:+-b ${BASE_PATH}} \\ ${JOURNAL_PATH:+-j ${JOURNAL_PATH}} \\ ${DAEMON_GROUP:+-G ${DAEMON_GROUP}} \\ ${DAEMON_USER:+-U ${DAEMON_USER}} \\ -p ${PIDFILE} \\ ${SOCKFILE:+${SOCKGROUP:+-s ${SOCKGROUP}} ${SOCKMODE:+-m ${SOCKMODE}} -l unix:${SOCKFILE}} \\ " . /lib/lsb/init-functions RETVAL=1 # Do any pre-start checks. If this returns nonzero, the failure # diagnostic has already been generated. validate_prestart () { if [ -n "${JOURNAL_PATH}" -a ! -d "${JOURNAL_PATH}" ] ; then mkdir -p "${JOURNAL_PATH}" if [ 0 != $? ] ; then log_failure_msg "${NAME}: Unable to find/create journal directory ${JOURNAL_PATH}" return 1 fi fi if [ -n "${BASE_PATH}" -a ! -d "${BASE_PATH}" ] ; then mkdir -p "${BASE_PATH}" if [ 0 != $? ] ; then log_failure_msg "${NAME}: Unable to find/create base directory ${BASE_PATH}" return 1 fi fi return 0 } # Whatever's necessary to start a daemon. Any currently-running # daemon is left unmolested and no new daemon is started. Return as # with start_daemon. do_start () { start_daemon -p ${PIDFILE} ${DAEMON} ${RRDCACHED_OPTIONS} return $? } # Perform a restart from a state with no daemon running. This # function emits the success/failure diagnostics. Return as with # restart. do_restart_diag () { validate_prestart if [ 0 != $? ] ; then rv=$? else do_start rv=$? if [ 0 = $? ] ; then log_success_msg "${NAME} restarted" else log_failure_msg "${NAME} restart failed" fi fi return ${rv} } # Whatever's necessary to check daemon status. Sets PID if the daemon # is running. Return as pidofproc. do_status () { PID=$( pidofproc -p ${PIDFILE} ${DAEMON} ) return $? } # Whatever's necessary to stop the daemon. Returns as stop action. do_stop () { killproc -p ${PIDFILE} ${DAEMON} rv=$? # rrdcached traps the TERM signal and does some flushing. # Give it a chance to shut down before returning, lest # we restart it too soon. max_iters=${STOP_WAIT_DELAY:-5} while [ 0 -lt ${max_iters} ] ; do if pidofproc -p ${PIDFILE} ${DAEMON} >/dev/null ; then log_warning_msg "${NAME} is still running" sleep 1 max_iters=$(( ${max_iters} - 1 )) rv=1 else rv=0 break fi done return $? } case "$1" in start) # Succeed if service already started or start attempt succeeds if do_status > /dev/null ; then log_success_msg "${NAME} is already started as ${PID}" RETVAL=0 else validate_prestart RETVAL=$? if [ 0 = ${RETVAL} ] ; then do_start RETVAL=$? if [ 0 = ${RETVAL} ] ; then log_success_msg "${NAME} started" else log_failure_msg "${NAME} FAILED" fi fi fi ;; stop) if pidofproc -p ${PIDFILE} ${DAEMON} > /dev/null ; then do_stop RETVAL=$? if [ 0 = ${RETVAL} ] ; then log_success_msg "${NAME} has been stopped" else log_failure_msg "${NAME} was not stopped" fi else log_success_msg "${NAME} was already stopped" RETVAL=0 fi ;; restart) do_stop do_restart_diag RETVAL=$? ;; try-restart) if pidofproc -p ${PIDFILE} ${DAEMON} > /dev/null ; then do_stop do_restart_diag RETVAL=$? else # Yes, try-restart when the system is not running is # success. log_success_msg "${NAME} not running" RETVAL=0 fi ;; reload|force-reload) RETVAL=3 log_failure_msg "${NAME} does not support $1" ;; status) do_status RETVAL=$? if [ 0 = "${RETVAL}" ] ; then log_success_msg "${NAME} status ${RETVAL} is running as ${PID}" else log_failure_msg "${NAME} is not running" fi ;; '') log_warning_msg "No command (try: status)" ;; *) log_warning_msg "Unrecognized command: $1" ;; esac exit $RETVAL