#!/sbin/runscript #--------------------------------------------------------------------------- # This script starts/stops the following # rpc.statd if necessary (also checked by init.d/nfsmount) # rpd.rquotad # rpd.nfsd # rpc.mountd # # (17 Aug 2001 agriffis) #--------------------------------------------------------------------------- # These can be overridden in /etc/rc.d/config/basic if desired RPCNFSDCOUNT=8 # Number of servers to be started up by default RPCMOUNTDOPTS= # This variable is used for controlling whether or not to run exportfs -ua; # see stop() for more information RESTARTING=no opts="start stop restart reload" depend() { need net portmap } start_statd() { # Don't start rpc.statd if already started by init.d/nfsmount killall -0 rpc.statd &>/dev/null && return 0 ebegin "Starting NFS statd" start-stop-daemon --start --quiet --exec /sbin/rpc.statd 1>&2 eend $? "Error starting NFS statd" } stop_statd() { # Don't stop rpc.statd if it's in use by init.d/nfsmount. mount -t nfs | grep -q . && return 0 # Make sure it's actually running killall -0 rpc.statd &>/dev/null || return 0 # Okay, all tests passed, stop rpc.statd ebegin "Stopping NFS statd" start-stop-daemon --stop --quiet --exec /sbin/rpc.statd 1>&2 eend $? "Error stopping NFS statd" } start() { if [ "$NFSSERVER" = "yes" ] then start_statd if grep -q '^/' /etc/exports &>/dev/null; then ebegin "Exporting NFS directories" /sbin/exportfs -r 1>&2 eend $? "Error exporting NFS directories" fi ebegin "Starting NFS rquotad" start-stop-daemon --start --quiet --exec /sbin/rpc.rquotad 1>&2 eend $? "Error starting NFS rquotad" ebegin "Starting NFS daemon" start-stop-daemon --start --quiet --exec \ /sbin/rpc.nfsd -- $RPCNFSDCOUNT 1>&2 eend $? "Error starting NFS daemon" # Check if we support NFSv3 ebegin "Starting NFS mountd" rpcinfo -u localhost nfs 3 &>/dev/null || \ RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3" start-stop-daemon --start --quiet --exec \ /sbin/rpc.mountd -- $RPCMOUNTDOPTS 1>&2 eend $? "Error starting NFS mountd" fi } stop() { # Don't check NFSSERVER variable since it might have changed, # instead use --oknodo to smooth things over ebegin "Stopping NFS mountd" start-stop-daemon --stop --quiet --oknodo \ --exec /sbin/rpc.mountd 1>&2 eend $? "Error stopping NFS mountd" ebegin "Stopping NFS daemon" start-stop-daemon --stop --quiet --oknodo \ --name nfsd --user root --signal 2 1>&2 eend $? "Error stopping NFS daemon" ebegin "Stopping NFS rquotad" start-stop-daemon --stop --quiet --oknodo \ --exec /sbin/rpc.rquotad 1>&2 eend $? "Error stopping NFS rquotad" # When simply restarting the NFS server, running "exportfs -ua" # probably isn't what the user wants. Running it causes all # entries listed in xtab to be removed from the kernel export # tables, and the xtab file is cleared. This effectively shuts # down all NFS activity, leaving all clients holding stale NFS # filehandles, /even/ when the NFS server has restarted. # # This is what you would want if you were shutting down the NFS # server for good, or for a long period of time, but not when the # NFS server will be running again in short order. In this case, # then "exportfs -r" will reread the xtab, and all the current # clients will be able to resume NFS activity, /without/ needing # to umount/(re)mount the filesystem. if [ "$RESTARTING" = no ]; then ebegin "Unexporting NFS directories" /sbin/exportfs -ua 1>&2 eend $? "Error unexporting NFS directories" fi stop_statd } reload() { /sbin/exportfs -r } restart() { # See comment in stop() regarding exportfs -ua RESTARTING=yes stop start }