From 8eb9c0b6b548ee685166ea82c69d5cd8502a0b3f Mon Sep 17 00:00:00 2001 From: Harald Pfeiffer Date: Thu, 26 Nov 2015 11:49:31 +0100 Subject: Implemented SIGHUP and version check, cleaned up code. --- init.d/infinoted | 63 +++++++++++--------------------------------------------- 1 file changed, 12 insertions(+), 51 deletions(-) (limited to 'init.d/infinoted') diff --git a/init.d/infinoted b/init.d/infinoted index 5c02c8e..2600080 100755 --- a/init.d/infinoted +++ b/init.d/infinoted @@ -9,6 +9,7 @@ # Description: My hovercraft is full of eels. ### END INIT INFO +#------------------------------------------------------------------------- # Author: Harald Pfeiffer # Version: 0.666 # This is basically the SysVinit skeleton from Debian with @@ -19,12 +20,13 @@ # status_of_proc: So we set up a $PIDFILE and don't pass it on to # status_of_proc? What's the danger in this? In infinoted's case, # however, we are heavily dependent on this. Added. - +# # Additional remarks: # CLI output: infinoted insists on puking its loaded plugins at you at any # startup, so the LSB startup line might look a bit chaotic. # Unfortunately, same as the location of the PID file, this is # hardcoded. *claps* +#------------------------------------------------------------------------- # Do NOT "set -e" @@ -48,32 +50,21 @@ INFINOTE_PORT="6663" # SCRIPTUSER below # hp -- Mind the major infinote release - the devs decided to put its number into the pid file name. # Bleh. -PIDFILE=$INFINOTE_ROOT/.infinoted/infinoted-0.5.pid +INFINOTE_MAJVER="`infinoted -v|awk '{print $NF}'|awk -F\. '{print $1"."$2}'`" +PIDFILE=$INFINOTE_ROOT/.infinoted/infinoted-$INFINOTE_MAJVER.pid SCRIPTNAME=/etc/init.d/$NAME # hp -- add a user to execute this. Might not want to run this as root (: SCRIPTUSER="infinote:infinote" -# Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 - -# Read configuration variable file if it is present [ -r $SYSVDEFAULTS/$NAME ] && . $SYSVDEFAULTS/$NAME DAEMON_ARGS="-d -c $INFINOTE_CERT -k $INFINOTE_KEY -p $INFINOTE_PORT -r $INFINOTE_ROOT" -# 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 -# -# 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 @@ -82,17 +73,10 @@ do_start() start-stop-daemon -c $SCRIPTUSER --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 - # Add code here, if necessary, that waits for the process to be ready - # to handle requests from services started subsequently which depend - # on this one. As a last resort, sleep for some time. } -# -# 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 @@ -100,28 +84,14 @@ do_stop() start-stop-daemon -c $SCRIPTUSER --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 - # Wait for children to finish too if this is a daemon that forks - # and if the daemon is only ever run from this initscript. - # If the above conditions are not satisfied then add some other code - # that waits for the process to drop all resources that could be - # needed by services started subsequently. A last resort is to - # sleep for some time. start-stop-daemon -c $SCRIPTUSER --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 - # Many daemons don't delete their pidfiles when they exit. #rm -f $PIDFILE return "$RETVAL" } -# -# Function that sends a SIGHUP to the daemon/service -# +# hp -- infinoted has SIGHUP for reload in infinoted-signal.c --> 'ere we go: do_reload() { - # - # If the daemon can reload its configuration without - # restarting (for example, when it is sent a SIGHUP), - # then implement that here. - # start-stop-daemon -c $SCRIPTUSER --stop --signal 1 --quiet --make-pidfile --pidfile $PIDFILE --name $NAME return 0 } @@ -146,20 +116,12 @@ case "$1" in status) status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $? ;; - #reload|force-reload) - # - # If do_reload() is not implemented then leave this commented out - # and leave 'force-reload' as an alias for 'restart'. - # - #log_daemon_msg "Reloading $DESC" "$NAME" - #do_reload - #log_end_msg $? - #;; + reload|force-reload) + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + log_end_msg $? + ;; restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in @@ -178,8 +140,7 @@ case "$1" in esac ;; *) - #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 - echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 exit 3 ;; esac -- cgit v1.2.3