2 # nfs This shell script starts and stops the nfs services in a distribution
5 # description: starts and stops nfs server services
6 # chkconfig: 2345 60 20
8 # Copyright (c) 2000-2001 Mission Critical Linux, Inc.
11 PATH=/sbin:/bin:/usr/sbin:/usr/bin
15 SCRIPT_NAME=`basename $0`
17 # Grab our daemon functions.
18 . `dirname $0`/nfs-functions
20 # Kernel daemons and options
21 PREFIX="rpc." # Prefix for kernel execs (usually "rpc.")
22 NFSD="nfsd" # Kernel NFS Server
23 RPCNFSDCOUNT="8" # Number of nfsd threads
25 # User daemons and options
26 RQUOTAD="rpc.rquotad" # Remote quota server
27 MOUNTD="rpc.mountd" # Mount server
28 RPCMOUNTDOPTS="" # options for rpc.mountd
29 EXPORTFS="exportfs" # Exportfs command
31 SCRIPT_NAME=`basename $0`
32 DESC="NFS kernel daemon"
34 # We use "type -path" instead of "which" since it's internal to bash.
35 [ -x "`type -path $PREFIX$NFSD`" ] || exit 0
36 [ -x "`type -path $MOUNTD`" ] || exit 0
38 # Also make sure we have our exportfs command.
39 [ -x "`type -path $EXPORTFS`" ] || exit 0
40 [ -s /etc/exports ] || exit 0
42 # rquotad is not required for NFS to work, however.
43 # Unset if it is not present.
44 [ -x "`type -path $RQUOTAD`" ] || unset RQUOTAD
46 # Handle how we were called.
49 if [ -d /proc/fs/nfsd -a ! -f /proc/fs/nfsd/exports ] ;
51 /bin/mount -t nfsd nfsd /proc/fs/nfsd
53 echo -n "Exporting directories for $DESC..."
57 echo -n "Starting $NFSD: "
58 startdaemon $PREFIX$NFSD $RPCNFSDCOUNT
60 # Disable NFSv3 on mountd if we don't have NFSv3
62 if [ -f /proc/net/rpc/auth.unix.ip/channel ] ; then
63 if grep -s 127.0.0.1 /proc/net/rpc/auth.unix.ip/content > /dev/null ; then
64 : address already known
66 echo nfsd 127.0.0.1 2147483647 localhost > /proc/net/rpc/auth.unix.ip/channel
70 rpcinfo -u localhost nfs 3 &>/dev/null
73 RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
75 if [ -n "$ClearAddr" ]; then
76 echo nfsd 127.0.0.1 1 > /proc/net/rpc/auth.unix.ip/channel
79 echo -n "Starting $MOUNTD: "
80 startdaemon $MOUNTD $RPCMOUNTDOPTS
82 # Start rquotad if it is set
85 echo -n "Starting $RQUOTAD: "
89 # if this lock file doesn't exist, init won't even try to run
90 # the shutdown script for this service on RedHat systems!
91 # on non-RedHat systems, /var/lock/subsys may not exist.
92 touch /var/lock/subsys/$SCRIPT_NAME &> /dev/null
96 for process in $RQUOTAD $MOUNTD $NFSD
98 echo -n "Stopping $process: "
102 echo "Unexporting directories for $DESC..."
104 if [ -f /proc/fs/nfsd/exports ] ; then /bin/umount -t nfsd nfsd /proc/fs/nfsd ; fi
105 rm -f /var/lock/subsys/$SCRIPT_NAME
117 echo "Re-exporting directories for $DESC..."
119 touch /var/lock/subsys/$SCRIPT_NAME &> /dev/null
124 # First, check status of userland daemons
125 for process in $RQUOTAD $MOUNTD $NFSD
127 daemonstatus $process
133 echo "Usage: $0 {start|stop|status|restart|reload}"