diff options
Diffstat (limited to 'abs/core-testing/nfs-utils/nfsd')
| -rwxr-xr-x | abs/core-testing/nfs-utils/nfsd | 91 | 
1 files changed, 91 insertions, 0 deletions
| diff --git a/abs/core-testing/nfs-utils/nfsd b/abs/core-testing/nfs-utils/nfsd new file mode 100755 index 0000000..ce891e2 --- /dev/null +++ b/abs/core-testing/nfs-utils/nfsd @@ -0,0 +1,91 @@ +#!/bin/bash + +# source application-specific settings +[ -f /etc/conf.d/nfs ] && . /etc/conf.d/nfs + +. /etc/rc.conf +. /etc/rc.d/functions + +DAEMON_NAME=nfsd +NFSD_PID=`pidof -o %PPID nfsd` +MOUNTD_PID=`pidof -o %PPID /usr/sbin/rpc.mountd` +case "$1" in +  start) +    stat_busy "Starting $DAEMON_NAME" +    # Check for portmap +    if [ ! -f /var/run/daemons/portmap ]; then  +		echo "ERROR: portmap is not running" +      stat_fail +      exit 1 +    fi +    # Check for nfslock +    if [ ! -f /var/run/daemons/nfslock ]; then  +		echo "ERROR: nfslock is not running" +      stat_fail +      exit 1 +    fi +    # Check for /proc/fs/nfsd +    if grep -qs nfsd /proc/filesystems ; then +	if ! grep -qs "nfsd /proc/fs/nfsd" /proc/mounts ; then +	    mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd +	fi +    fi +    # Run exportfs +    /usr/sbin/exportfs -r +    # Run mountd +    [ -z "$MOUNTD_PID" ] && /usr/sbin/rpc.mountd $MOUNTD_OPTS +    if [ $? -gt 0 ]; then +      stat_fail +      exit 1 +    else +      echo `pidof -o %PPID /usr/sbin/rpc.mountd` > /var/run/rpc.mountd.pid +    fi +    # Run nfsd +    [ -z "$NFSD_PID" ] && /usr/sbin/rpc.nfsd $NFSD_OPTS +    if [ $? -gt 0 ]; then +      stat_fail +      exit 1 +    else +      echo `pidof -o %PPID nfsd` > /var/run/rpc.nfsd.pid +    fi +    # Run sm-notify +    /usr/sbin/sm-notify $SMNOTIFY_OPTS +    add_daemon $DAEMON_NAME +    stat_done +    ;; + +  stop) +    stat_busy "Stopping $DAEMON_NAME" +    [ ! -z "$MOUNTD_PID" ]  && kill $MOUNTD_PID &> /dev/null +    if [ $? -gt 0 ]; then +      stat_fail +      exit 1 +    else +      rm /var/run/rpc.mountd.pid &> /dev/null +    fi +    sleep 1 +    [ ! -z "$NFSD_PID" ]  && kill $NFSD_PID &> /dev/null +    if [ $? -gt 0 ]; then +      stat_fail +      exit 1 +    else +      kill -9 $NFSD_PID &> /dev/null +      rm /var/run/rpc.nfsd.pid &> /dev/null +    fi +    if [ "$RUNLEVEL" = "0" ]; then +      /usr/sbin/exportfs -au +    fi +    rm_daemon $DAEMON_NAME +    stat_done +    ;; + +  restart) +    $0 stop +    sleep 2 +    $0 start +    ;; + +  *) +    echo "usage: $0 {start|stop|restart}"   +esac +exit 0 | 
