]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - etc/nodist/nfs-client
Initial script for nfs client (lockd/statd)
[nfs-utils.git] / etc / nodist / nfs-client
diff --git a/etc/nodist/nfs-client b/etc/nodist/nfs-client
new file mode 100755 (executable)
index 0000000..4c0fa41
--- /dev/null
@@ -0,0 +1,115 @@
+#!/bin/sh
+# nfs   This shell script starts and stops the nfs services in a distribution
+#       independent fashion.
+## description:  starts and stops nfs client services
+# chkconfig: 2345 99 01
+#
+# Copyright (c) 2000-2001 Mission Critical Linux, Inc.
+#
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+export PATH
+
+# Who am I?
+SCRIPT_NAME=`basename $0`
+
+# Grab our daemon functions.
+. `dirname $0`/nfs-functions
+
+# Kernel daemons and options
+PREFIX="rpc."          # Prefix for kernel execs (usually "rpc.")
+LOCKD="lockd"          # Lockd
+
+# User daemons and options
+STATD="rpc.statd"      # NLM Server
+
+
+# We need rpc.lockd on kernels < 2.2.18 if Trond Myklebust and Dave Higgens'
+# NFS patches have not been applied.
+lockd_not_needed()
+{
+    if [ "`uname`" = "Linux" ]; then 
+
+        os_rel=`uname -r`
+
+        # This messily chops up the linux version number and turns it into
+        # a comparable integer.
+        # 
+        # printf  value                         description
+        # %d      `echo $os_rel | cut -f1 -d.`  Major Linux release #
+        # %02d    `echo $os_rel | cut -f2 -d.`  Minor Linux release #
+        # %02d    `echo $os_rel | cut -f3 -d.`  Patchlevel
+        #
+        linux_version_code=`printf "%d%02d%02d" \`echo $os_rel | cut -f1 -d.\` \`echo $os_rel | cut -f2 -d.\` \`echo $os_rel | cut -f3 -d.\``
+       return $((linux_version_code < 20218))
+    fi
+
+    # On non-Linux systems, assume that lockd is always required.
+    return 1
+}
+
+# We use "type -path" instead of "which" since it's internal to bash.
+[ -x "`type -path $STATD`" ] || exit 0
+
+# Check to see if we need lockd (ie, nfsd doesn't handle spawning and
+# maintaining it)
+if lockd_not_needed
+then
+    unset LOCKD
+else
+    # We need it.  Make sure we have it.
+    [ -x "`type -path $PREFIX$LOCKD`" ] || exit 0
+fi
+
+# Handle how we were called.
+case "$1" in
+start)
+    # Start rpc.statd daemon without options...
+    echo -n "Starting $STATD: "
+    startdaemon $STATD
+
+    if [ -n "$LOCKD" ]
+    then
+        echo -n "Starting $LOCKD: "
+        startdaemon $PREFIX$LOCKD
+    fi
+
+    # if this lock file doesn't exist, init won't even try to run
+    # the shutdown script for this service on RedHat systems!
+    # on non-RedHat systems, /var/lock/subsys may not exist.
+    touch /var/lock/subsys/$SCRIPT_NAME &> /dev/null
+    ;;
+
+stop)
+    echo -n "Stopping $STATD: "
+    stopdaemon $STATD
+
+    if [ -n "$LOCKD" ]; then 
+        echo -n "Stopping $LOCKD: "
+        stopdaemon $LOCKD
+    fi
+
+    rm -f /var/lock/subsys/$SCRIPT_NAME 
+    ;;
+
+restart)
+    $0 stop
+    $0 start
+    ;;
+
+status)
+    daemonstatus $STATD
+
+    if [ -n "$LOCKD" ]; then
+        daemonstatus $LOCKD
+    fi
+
+    exit 0
+    ;;
+
+*)
+    echo "Usage: $0 {start|stop|status|restart}"
+    exit 1
+esac
+
+exit 0