X-Git-Url: https://git.sven.stormbind.net/?p=sven%2Fmpt-status.git;a=blobdiff_plain;f=mpt-status.init;h=6599f3c52096bdc1c1c2c41b3605dad3dc27a72e;hp=65b2e79bdccc9986b43e77b5aebf86a53adc36da;hb=HEAD;hpb=b417e89bc0b10bef788620ed0a86d9edd896da39 diff --git a/mpt-status.init b/mpt-status.init index 65b2e79..6599f3c 100644 --- a/mpt-status.init +++ b/mpt-status.init @@ -1,20 +1,20 @@ #! /bin/sh # Author: Petter Reinholdtsen +# Author: Sven Hoexter # License: GNU General Public License v2 or later # mpt-statusd - Check mpt-status values in the background. # -# chkconfig: 345 60 50 +# chkconfig: - 60 50 # description: Check mpt-status values in the background \ # using daemonize and the mpt-status utility. ### BEGIN INIT INFO -# Provides: mpt-statusd -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 +# Provides: mpt-statusd +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Stop: 0 1 6 # Short-Description: Check mpt-status values in the background. ### END INIT INFO @@ -24,7 +24,7 @@ NAME=mpt-statusd PIDFILE=/var/run/$NAME.pid STATUSFILE=/var/run/$NAME.status SCRIPTNAME=/etc/init.d/$NAME - +LOCKFILE=/var/lock/subsys/$NAME # Do not touch you can configure this in /etc/default/mpt-statusd MAILTO=root # Where to report problems @@ -40,17 +40,20 @@ test -x /usr/sbin/mpt-status || exit 0 # Source function library. . /etc/rc.d/init.d/functions -. /lib/lsb/init-functions if [ $RUN_DAEMON = "no" ] ; then - log_failure_msg $"mpt-statusd is disabled in /etc/default/mpt-statusd, not starting." + echo "mpt-statusd is disabled in /etc/default/mpt-statusd, not starting." && failure exit 0 fi -#if ! [ -e "/proc/mpt/version" ] ; then -# log_failure_msg "The mptctl module is missing." -# exit 0 -#fi + +#Try to blindly load the mptctl module +modprobe mptctl || true + +if ! [ -e "/proc/mpt/version" ] ; then + echo "The mptctl module is missing." && failure + exit 0 +fi check_mpt() { echo $$ > $PIDFILE.new && mv $PIDFILE.new $PIDFILE @@ -132,14 +135,16 @@ check_daemon() { d_start() { [ -f $PIDFILE ] && PID="`cat $PIDFILE`" if [ "$PID" ] ; then - log_warning_msg "Daemon already running. Refusing to start another" + echo "Daemon already running. Refusing to start another" && warning return 0 elif check_daemon ; then # Use daemonize to turn it into a daemon and start it with daemon(). daemon --pidfile $PIDFILE /usr/sbin/daemonize $SCRIPTNAME check_mpt - return 0 + RETVAL=$? + [ $RETVAL -eq 0 ] && touch $LOCKFILE + return $RETVAL else - log_warning_msg "Daemon is already running. Refusing to start another" + echo "Daemon is already running. Refusing to start another" && warning return 0 fi } @@ -149,10 +154,18 @@ d_start() { # d_stop() { if [ -f $PIDFILE ] ; then - killproc -p $PIDFILE $SCRIPTNAME > /dev/null 2>&1 - rm -f $PIDFILE + killproc $SCRIPTNAME + RETVAL=$? + if [ $RETVAL -eq 0 ] ; then + success "$NAME stopped" + rm -f $PIDFILE $LOCKFILE + return 0 + else + echo "$NAME failed to stop" && failure + return 1 + fi else - log_warning_msg "Daemon is already stopped." + echo "$NAME is already stopped." && warning return 0 fi } @@ -161,31 +174,33 @@ d_stop() { # therefore can be used by a restart d_stop_by_restart() { if [ -f $PIDFILE ] ; then - killproc -p $PIDFILE $SCRIPTNAME > /dev/null 2>&1 - rm -f $PIDFILE + killproc -p $PIDFILE $SCRIPTNAME > /dev/null 2>&1 + rm -f $PIDFILE $LOCKFILE else - log_warning_msg "Daemon is already stopped." + echo "Daemon is already stopped." && warning fi } case "$1" in start) - echo -n "" - echo -n $"Starting $DESC: $NAME" + echo $"Starting $DESC: $NAME" d_start + echo ;; stop) - log_begin_msg "Stopping $DESC: $NAME" + echo $"Stopping $DESC: $NAME" d_stop + echo ;; check_mpt) check_mpt ;; restart|force-reload) - echo -n "Restarting $DESC: $NAME" + echo "Restarting $DESC: $NAME" d_stop_by_restart sleep 1 d_start + echo ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2