From 75a10ce578c38374ff4101dad16c505788f2e9db Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Tue, 10 Jul 2012 08:12:26 +0200 Subject: [PATCH] fix init.d script sheep does not create a pid file --- debian/pve-sheepdog.sheepdog.default | 2 +- debian/pve-sheepdog.sheepdog.init.d | 77 ++++++++++++++++------------ 2 files changed, 44 insertions(+), 35 deletions(-) diff --git a/debian/pve-sheepdog.sheepdog.default b/debian/pve-sheepdog.sheepdog.default index 5e849bd..d17137f 100644 --- a/debian/pve-sheepdog.sheepdog.default +++ b/debian/pve-sheepdog.sheepdog.default @@ -12,4 +12,4 @@ START=yes # Additional options that are passed to the Daemon. DAEMON_OPTS="" -SHEEPDOG_PATH="/var/lib/vz/sheepdog" +#SHEEPDOG_PATH="/var/lib/sheepdog" diff --git a/debian/pve-sheepdog.sheepdog.init.d b/debian/pve-sheepdog.sheepdog.init.d index 64b5ea5..693ab23 100644 --- a/debian/pve-sheepdog.sheepdog.init.d +++ b/debian/pve-sheepdog.sheepdog.init.d @@ -23,6 +23,9 @@ SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x $DAEMON ] || exit 0 +# Defaults +SHEEPDOG_PATH="/var/lib/sheepdog" + # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME @@ -30,19 +33,25 @@ if [ "$START" != "yes" ]; then exit 0 fi -# Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh - -# Define LSB log_* functions. -# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions +status() +{ + pid=$(pidof $1 2>/dev/null) + rtrn=$? + if [ $rtrn -ne 0 ]; then + echo "$1 is stopped" + else + echo "$1 (pid $pid) is running..." + fi + return $rtrn +} + # # Function that starts the daemon/service # do_start() { - mkdir -p /var/run mkdir -p $SHEEPDOG_PATH @@ -51,7 +60,9 @@ do_start() # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started - start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null || return 1 + + status "$DAEMON" >/dev/null && return 1 + start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_ARGS $SHEEPDOG_PATH || return 2 } @@ -65,60 +76,58 @@ do_stop() # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred - ! start-stop-daemon --start --quiet --exec $DAEMON --test > /dev/null && return 1 - start-stop-daemon --stop --quiet --retry=TERM/20/KILL/5 --exec $DAEMON + status "$DAEMON" >/dev/null || return 1 + + start-stop-daemon --stop --retry=TERM/20/KILL/5 --exec $DAEMON RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. # rm -f $PIDFILE + return "$RETVAL" } 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 ;; + start) + log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; esac - ;; - stop) - [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + ;; + stop) + 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 ;; + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; esac ;; - status) - status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? - ;; - restart|force-reload) - # - # If the "reload" option is implemented then remove the - # 'force-reload' alias - # + status) + status "$DAEMON" && exit 0 || exit $? + ;; + restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in - 0|1) + 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 + 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 ;; - *) + *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; -- 2.39.2