Subversion Repositories configs

Rev

Rev 3 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/bin/bash
#
# rc file for automount using a Sun-style "master map".
#
# chkconfig: 345 28 72
# processname: /usr/sbin/automount
# config: /etc/auto.master
# description: Automounts filesystems on demand
#
### BEGIN INIT INFO
# Provides: autofs
# Required-Start: $network ypbind
# Required-Stop: $network ypbind
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Automounts filesystems on demand
# Description: Automounts filesystems on demand
### END INIT INFO
#
# Location of the automount daemon and the init directory
#
DAEMON=/usr/sbin/automount
prog=`basename $DAEMON`
MODULE="autofs4"
DEVICE="autofs"
initdir=/etc/init.d
confdir=/etc/sysconfig

test -e $DAEMON || exit 0

if [ -r $initdir/functions ]; then
        . $initdir/functions
fi

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH

#
# load customized configuation settings
#
if [ -r $confdir/autofs ]; then
        . $confdir/autofs
fi

function start() {
        # Make sure autofs4 module is loaded
        if ! grep -q autofs /proc/filesystems
        then
                echo -n "Loading $MODULE: "
                # Try load the autofs4 module fail if we can't
                modprobe $MODULE >/dev/null 2>&1
                RETVAL=$?
                if [ $RETVAL -eq 1 ]
                then
                        failure "Load $MODULE"
                        echo
                        return $RETVAL
                else
                        success "Load $MODULE"
                        echo
                fi
        elif ([ -f /proc/modules ] && lsmod) | grep -q autofs[^4]
        then
                RETVAL=1
                failure "Load $MODULE"
                echo
                return $RETVAL
        fi

        # Check misc device
        if [ -n "$USE_MISC_DEVICE" -a "x$USE_MISC_DEVICE" = "xyes" ]; then
                sleep 1
                if [ -e "/proc/misc" ]; then
                        MINOR=`awk "/$DEVICE/ {print \\$1}" /proc/misc`
                        if [ -n "$MINOR" -a ! -c "/dev/$DEVICE" ]; then
                                mknod -m 0600 /dev/$DEVICE c 10 $MINOR
                        fi
                fi
                if [ -x /sbin/restorecon -a -c /dev/$DEVICE ]; then
                        /sbin/restorecon /dev/$DEVICE
                fi
        else
                if [ -c /dev/$DEVICE ]; then
                        rm /dev/$DEVICE
                fi
        fi

        echo -n $"Starting $prog: "
        $prog $OPTIONS --pid-file /var/run/autofs.pid
        RETVAL=$?
        if [ $RETVAL -eq 0 ] ; then
                success "$prog startup"
        else
                failure "$prog startup"
        fi
        if [ $RETVAL -eq 0 ]; then
                touch /var/lock/subsys/autofs
        else
                RETVAL=1
        fi
        echo
        return $RETVAL
}

function stop() {
        echo -n $"Stopping $prog: "
        count=0
        while [ -n "`pidof $prog`" -a $count -lt 15 ] ; do
                killproc $prog -TERM >& /dev/null
                RETVAL=$?
                [ $RETVAL = 0 -a -z "`pidof $prog`" ] || sleep 3
                count=`expr $count + 1`
        done
        if [ $RETVAL -eq 0 ]; then
                rm -f /var/lock/subsys/autofs
        else
                RETVAL=1
        fi
        if [ -n "`pidof $prog`" ] ; then
                failure "$prog shutdown"
        else
                success "$prog shutdown"
        fi
        echo
        return $RETVAL
}

function restart() {
        status autofs > /dev/null 2>&1
        if [ $? -eq 0 ]; then
                stop
                if [ -n "`pidof $prog`" ]; then
                        # If we failed to stop, try at least one more time
                        # after waiting a little while
                        sleep 20
                        stop
                        auto_pid=`pidof $prog`
                        if [ -n "$auto_pid" ]; then
                                kill -9 $auto_pid
                        fi
                fi
        fi
        start
}

function reload() {
        if [ ! -f /var/lock/subsys/autofs ]; then
                echo $"$prog not running"
                RETVAL=1
                return $RETVAL
        fi
        pid=`pidof $prog`
        if [ -z $pid ]; then
                echo $"$prog not running"
                RETVAL=1
        else
                kill -HUP $pid 2> /dev/null
                echo $"Reloading maps"
                RETVAL=0
        fi
        return $RETVAL
}

function usage_message() {
        echo $"Usage: $0 {start|forcestart|stop|status|restart|force-reload|forcerestart|reload|condrestart|try-restart|usage}"
}

RETVAL=0

# allow non-root users to read status / usage

case "$1" in
        status)
                status -p /var/run/autofs.pid -l autofs $prog
                exit $?;
                ;;
        usage)
                usage_message
                exit 0;
                ;;
esac

# Only the root user may change the service status
if [ `id -u` -ne 0 ]; then
        echo "insufficient privilege to change service status"
        exit 4
fi

case "$1" in
        start)
                start
                ;;
        forcestart)
                OPTIONS="$OPTIONS --force"
                start
                ;;
        stop)
                stop
                ;;
        restart|force-reload)
                restart
                ;;
        forcerestart)
                OPTIONS="$OPTIONS --force"
                restart
                ;;
        reload)
                reload
                ;;
        condrestart|try-restart)
                if [ -f /var/lock/subsys/autofs ]; then
                        restart
                fi
                ;;
        *)
                usage_message
                exit 2
                ;;
esac

exit $?