Subject: Improve init scripts Author: Christoph Biedl Forwarded: not-yet Last-Update: 2024-06-19 --- a/contrib/persistence/vblade.init.in +++ b/contrib/persistence/vblade.init.in @@ -8,7 +8,7 @@ # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: vblade exports -# Description: Manage all vlbade exports defined in +# Description: Manage all vblade exports defined in # /etc/vblade.conf.d/ ### END INIT INFO @@ -98,6 +98,10 @@ --exec $ionice "$VBLADE" -- \ $shelf $slot $netif $filename $options \ || return 2 + sleep 1 + start-stop-daemon --start --quiet \ + --pidfile "$PIDFILE" --exec "$VBLADE" --test > /dev/null \ + && return 2 [% ELSIF control == 'daemon' -%] "$DAEMON" \ --running \ @@ -112,6 +116,12 @@ --stdout daemon.notice \ --stderr daemon.err -- \ $VBLADE $options $shelf $slot $netif $filename || return 2 + sleep 1 + "$DAEMON" \ + --running \ + --name "$INSTANCE" \ + --pidfiles "$PIDDIR" \ + || return 2 [% END -%] } @@ -168,7 +178,10 @@ do_start "$INSTANCE" "$CONFIG" case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + 2) + [ "$VERBOSE" != no ] && log_end_msg 1 + EXIT=1 + ;; esac ;; stop) @@ -176,7 +189,10 @@ do_stop "$INSTANCE" case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + 2) + [ "$VERBOSE" != no ] && log_end_msg 1 + EXIT=1 + ;; esac ;; status) --- a/contrib/persistence/vblade.init.lsb-daemon +++ b/contrib/persistence/vblade.init.lsb-daemon @@ -22,13 +22,23 @@ [ -x "$VBLADE" ] || exit 0 [ -x "$DAEMON" ] || exit 0 +. /usr/lib/lsb/init-functions + mkdir -p "$PIDDIR" # Load the VERBOSE setting and other rcS variables -. /lib/init/vars.sh +. /usr/lib/init/vars.sh # Define LSB functions -. /lib/lsb/init-functions +. /usr/lib/lsb/init-functions + +missing () { + local MESSAGE + + MESSAGE="Did not define $1" + [ "$VERBOSE" != no ] && log_daemon_msg "$INSTANCE.conf" "$MESSAGE" + return 1 +} # Start a vblade instance # @@ -37,8 +47,10 @@ # 1 if daemon was already running # 2 if daemon could not be started do_start () { - local INSTANCE="$1" - local CONFIG="$2" + local INSTANCE + local CONFIG + INSTANCE="$1" + CONFIG="$2" sh -n "$CONFIG" 2>/dev/null || return 2 @@ -51,10 +63,10 @@ . "$CONFIG" - [ "$netif" ] || return 2 - [ "$shelf" ] || return 2 - [ "$slot" ] || return 2 - [ "$filename" ] || return 2 + [ "$netif" ] || missing netif || return 2 + [ "$shelf" ] || missing shelf || return 2 + [ "$slot" ] || missing slot || return 2 + [ "$filename" ] || missing filename || return 2 if [ "$ionice" ] ; then if [ -x "$IONICE" ] ; then @@ -77,6 +89,12 @@ --stdout daemon.notice \ --stderr daemon.err -- \ $VBLADE $options $shelf $slot $netif $filename || return 2 + sleep 1 + "$DAEMON" \ + --running \ + --name "$INSTANCE" \ + --pidfiles "$PIDDIR" \ + || return 2 } # Stop a vblade instance @@ -99,12 +117,14 @@ --pidfiles "$PIDDIR" \ --stop || return 2 # Wait until the process is gone - for i in $(seq 1 10) ; do + for i in $(seq 1 3) ; do "$DAEMON" \ --running \ --name "$INSTANCE" \ --pidfiles "$PIDDIR" || return 0 + sleep 1 done + # If it still didn't stop.. return 2 } @@ -121,7 +141,10 @@ do_start "$INSTANCE" "$CONFIG" case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + 2) + [ "$VERBOSE" != no ] && log_end_msg 1 + EXIT=1 + ;; esac ;; stop) @@ -129,7 +152,10 @@ do_stop "$INSTANCE" case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; - 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + 2) + [ "$VERBOSE" != no ] && log_end_msg 1 + EXIT=1 + ;; esac ;; status)