Skip to content
Snippets Groups Projects
Select Git revision
  • 8b72c849151d901b01283bdf3aa7a97483ecad02
  • master default
  • trunk
  • RELEASE_6_5_DRIVEDB
  • RELEASE_6_6_DRIVEDB
  • RELEASE_7_0_DRIVEDB
  • RELEASE_7_2_DRIVEDB
  • RELEASE_7_3_DRIVEDB
  • RELEASE_6_0_DRIVEDB
  • RELEASE_6_1_DRIVEDB
  • RELEASE_6_2_DRIVEDB
  • RELEASE_6_3_DRIVEDB
  • RELEASE_6_4_DRIVEDB
  • tags/RELEASE_7_4
  • tags/RELEASE_7_3
  • RELEASE_5_41_DRIVEDB
  • RELEASE_5_42_DRIVEDB
  • RELEASE_5_43_DRIVEDB
  • tags/RELEASE_7_2
  • tags/RELEASE_7_1
  • tags/RELEASE_7_0
  • RELEASE_5_40_DRIVEDB
22 results

smartd.initd.in

Blame
  • smartd.initd.in 9.65 KiB
    #! @SHELL@
    
    # smartmontools init file for smartd
    # Copyright (C) 2002-4 Bruce Allen <smartmontools-support@lists.sourceforge.net>
    # $Id: smartd.initd.in,v 1.23 2004/04/04 12:49:31 ballen4705 Exp $
    
    # For RedHat and cousins:
    # chkconfig: 2345 40 40
    # description: Self Monitoring and Reporting Technology (SMART) Daemon
    # processname: smartd 
    
    # For SuSE and cousins
    ### BEGIN INIT INFO
    # Provides:          smartd
    # Required-Start:    $syslog
    # X-UnitedLinux-Should-Start: $sendmail
    # Required-Stop:     $syslog
    # X-UnitedLinux-Should-Stop:
    # Default-Start:     2 3 5
    # Default-Stop:
    # Short-Description: Monitors disk and tape health via S.M.A.R.T.
    # Description:       Start S.M.A.R.T. disk and tape monitor.
    ### END INIT INFO
    
    # This program is free software; you can redistribute it and/or modify it
    # under the terms of the GNU General Public License as published by the Free
    # Software Foundation; either version 2, or (at your option) any later
    # version. 
    # You should have received a copy of the GNU General Public License (for
    # example COPYING); if not, write to the Free Software Foundation, Inc., 675
    # Mass Ave, Cambridge, MA 02139, USA.
    # This code was originally developed as a Senior Thesis by Michael Cornwell
    # at the Concurrent Systems Laboratory (now part of the Storage Systems
    # Research Center), Jack Baskin School of Engineering, University of
    # California, Santa Cruz. http://ssrc.soe.ucsc.edu/.
    
    # Uncomment the line below to pass options to smartd on startup. 
    # Note that distribution specific configuration files like
    # /etc/{default,sysconfig}/smartmontools might override these
    #smartd_opts="--interval=1800"
    
    report_unsupported () {
        echo "Currently the smartmontools package has no init script for"
        echo "the $1 OS/distribution. If you can provide one or this"
        echo "one works after removing some ifdefs, please contact"
        echo "smartmontools-support@lists.sourceforge.net."
        exit 1
    }
    
    # Red Hat or Yellow Dog or Mandrake
    if [ -f /etc/redhat-release -o -f /etc/yellowdog-release -o -f /etc/mandrake-release ] ; then
        
    # Source function library
        . /etc/rc.d/init.d/functions
    
    # Source configuration file.  This should define the shell variable smartd_opts
        [ -r /etc/sysconfig/smartmontools ] && . /etc/sysconfig/smartmontools
        
        RETVAL=0
        
        prog=smartd
        
        case "$1" in
    	start)
    	    echo -n $"Starting $prog: "
    	    daemon /usr/sbin/smartd $smartd_opts
    	    touch /var/lock/subsys/smartd
    	    echo
    	    ;;
    	stop)
    	    echo -n $"Shutting down $prog: "
    	    killproc smartd
    	    rm -f /var/lock/subsys/smartd
    	    echo
    	    ;;
    	reload)
                echo -n $"Reloading $prog daemon configuration: "
    	    killproc /usr/sbin/smartd -HUP
    	    RETVAL=$?
    	    echo
    	    ;;
    	report)
    	    echo -n $"Checking SMART devices now: "
    	    killproc /usr/sbin/smartd -USR1
    	    RETVAL=$?
    	    echo
                ;;
    	restart)
    	    $0 stop
    	    $0 start
    	    ;;
    	status)
    	    status $prog
    	    ;;
    	*)
    	    echo $"Usage: $0 {start|stop|reload|report|restart|status}"
    	    RETVAL=1
        esac
        
        exit $RETVAL
    
    # Slackware
    elif [ -f /etc/slackware-version ] ; then
        
    # Source configuration file.  This should define the shell variable smartd_opts.
    # Email smartmontools-support@lists.sourceforge.net if there is a better choice
    # of path for Slackware.
    
        [ -r /etc/sysconfig/smartmontools ] && . /etc/sysconfig/smartmontools
    
        case "$1" in
    	start)
    	    echo -n "Starting smartd: "
    	    smartd $smartd_opts
    	    echo
    	    ;;
    	stop)
    	    echo -n "Shutting down smartd: "
    	    killall smartd
    	    echo
    	    ;;
    	restart)
    	    $0 stop
    	    sleep 1
    	    $0 start
    	    ;;
    	*)
    	    echo "Usage: smartd {start|stop|restart}"
    	    exit 1
        esac
        
        exit 0
        
    # SuSE
    elif [ -f /etc/SuSE-release ] ; then
        
        SMARTD_BIN=/usr/sbin/smartd
        test -x $SMARTD_BIN || exit 5
    
        # Existence of config file is optional
        SMARTD_CONFIG=/etc/smartd.conf
    
    # source configuration file. This should set the shell variable smartd_opts
        [ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
    
       # Shell functions sourced from /etc/rc.status:
       #      rc_check         check and set local and overall rc status
       #      rc_status        check and set local and overall rc status
       #      rc_status -v     ditto but be verbose in local rc status
       #      rc_status -v -r  ditto and clear the local rc status
       #      rc_failed        set local and overall rc status to failed
       #      rc_reset         clear local rc status (overall remains)
       #      rc_exit          exit appropriate to overall rc status
        . /etc/rc.status
        
       # First reset status of this service
        rc_reset
        
       # Return values acc. to LSB for all commands but status:
       # 0 - success
       # 1 - misc error
       # 2 - invalid or excess args
       # 3 - unimplemented feature (e.g. reload)
       # 4 - insufficient privilege
       # 5 - program not installed
       # 6 - program not configured
       #
       # Note that starting an already running service, stopping
       # or restarting a not-running service as well as the restart
       # with force-reload (in case signalling is not supported) are
       # considered a success.
        case "$1" in
    	start)
    	    echo -n "Starting smartd"
                ## Start daemon with startproc(8). If this fails
                ## the echo return value is set appropriate.
    	    
                # startproc should return 0, even if service is
                # already running to match LSB spec.
                startproc $SMARTD_BIN $smartd_opts
    	    
                # Remember status and be verbose
                rc_status -v
    	    ;;
    	stop)
    	    echo -n "Shutting down smartd"
                killproc -TERM $SMARTD_BIN
    	    
                # Remember status and be verbose
                rc_status -v
    	    ;;
    	restart | force-reload)
    	    $0 stop
    	    $0 start
    	    ;;
    	reload)
    	## Like force-reload, but if daemon does not support
    	## signaling, do nothing (!)
    	    rc_failed 3
    	    rc_status -v
    	    ;;
            status)
                echo -n "Checking for service smartd: "
                ## Check status with checkproc(8), if process is running
                ## checkproc will return with exit status 0.
    	    
                # Status has a slightly different for the status command:
                # 0 - service running
                # 1 - service dead, but /var/run/  pid  file exists
                # 2 - service dead, but /var/lock/ lock file exists
                # 3 - service not running
    	    
                # NOTE: checkproc returns LSB compliant status values.
                checkproc $SMARTD_BIN
                rc_status -v
                ;;
            probe)
    	    ## Optional: Probe for the necessity of a reload, print out the
    	    ## argument to this init script which is required for a reload.
    	    ## Note: probe is not (yet) part of LSB (as of 1.2)
    
    	    test $SMARTD_CONFIG -nt /var/run/smartd.pid && echo reload
    	    ;;
    	*)
    	    echo "Usage: $0 {start|stop|status|restart|force-reload|reload|probe}"
    	    exit 1
    	    ;;
        esac
        
        rc_exit
    
    # Debian case
    elif [ -f /etc/debian_version ] ; then
            PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    	SMARTCTL=/usr/sbin/smartctl
    	SMARTD=/usr/sbin/smartd
    	SMARTDPID=/var/run/smartd.pid
    	[ -x $SMARTCTL ] || exit 0
    	[ -x $SMARTD ] || exit 0
    	RET=0
    
    # source configuration file
    	[ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
    
    	smartd_opts="--pidfile $SMARTDPID $smartd_opts"
    	
    	case "$1" in
    	start)
    		echo -n "Starting S.M.A.R.T. daemon: smartd"
    		if start-stop-daemon --start --quiet --pidfile $SMARTDPID \
    	    	--exec $SMARTD -- $smartd_opts; then 
    	    		echo "."
    		else
    	        	echo " (failed)"
    			RET=1
    	    	fi
    	;;
    	stop)
    		echo -n "Stopping S.M.A.R.T. daemon: smartd"
    		start-stop-daemon --stop --quiet --oknodo --pidfile $SMARTDPID
    		echo "."
    	;;
    	restart|force-reload)
           		$0 stop
            	$0 start
            	;;
      	*)
    		echo "Usage: /etc/init.d/smartmontools {start|stop|restart|force-reload}"
    		exit 1
    	esac
     	exit $RET
    
    elif [ -f /etc/gentoo-release ] ; then
        report_unsupported "Gentoo"
    
    elif [ -f /etc/turbolinux-release ] ; then
        report_unsupported "Turbolinux"
    
    elif [ -f /etc/environment.corel ] ; then
        report_unsupported "Corel"
    
    # PLEASE ADD OTHER LINUX DISTRIBUTIONS JUST BEFORE THIS LINE, USING elif
    
    elif uname -a | grep FreeBSD > /dev/null 2>&1 ; then
    
    # Source configuration file.  This should define the shell variable smartd_opts.
    # Email smartmontools-support@lists.sourceforge.net if there is a better choice
    # of path for FreeBSD
    
        [ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
    
        PID_FILE=/var/run/smartd.pid
        
        case "$1" in
    	start)
    	    smartd -p $PID_FILE $smartd_opts
    	    echo -n "smartd "
    	    ;;
    	stop)
    	    kill `cat $PID_FILE`
    	    echo -n "smartd "
    	    ;;
    	restart)
    	    $0 stop
    	    sleep 1
    	    $0 start
    	    ;;
    	*)
    	    echo "Usage: smartd {start|stop|restart}"
    	    exit 1
        esac
        
        exit 0
    elif uname -a | grep SunOS > /dev/null 2>&1 ; then
        
    # Source configuration file.  This should define the shell variable smartd_opts.
    # Email smartmontools-support@lists.sourceforge.net if there is a better choice
    # of path for Solaris
    
        [ -r /etc/default/smartmontools ] && . /etc/default/smartmontools
    
        PID_FILE=/var/run/smartd.pid
        
        case "$1" in
    	start)
    	    smartd -p $PID_FILE $smartd_opts
    	    echo -n "smartd "
    	    ;;
    	stop)
    	    [ -f $PID_FILE ] && kill `cat $PID_FILE`
    	    echo -n "smartd "
    	    ;;
    	restart)
    	    $0 stop
    	    sleep 1
    	    $0 start
    	    ;;
    	*)
    	    echo "Usage: smartd {start|stop|restart}"
    	    exit 1
        esac
        
        exit 0
    # Add other OSes HERE, using elif...
    else
        report_unsupported "Unknown"
    fi
    
    # One should NEVER arrive here, except for a badly written case above,
    # that fails to exit.  
    echo "SOMETHING IS WRONG WITH THE SMARTD STARTUP SCRIPT"
    echo "PLEASE CONTACT smartmontools-support@lists.sourceforge.net"
    exit 1