#!/bin/sh # # nfs This shell script takes care of starting and stopping # the NFS services. # # chkconfig: 345 13 81 # description: NFS is a popular protocol for file sharing across TCP/IP \ # networks. This service provides NFS server functionality, \ # which is configured via the /etc/exports file. # probe: true # Source function library . /etc/rc.d/init.d/functions # Get network config . /etc/sysconfig/network # Get service configs [ -f /etc/sysconfig/nfslock ] && . /etc/sysconfig/nfslock [ -f /etc/sysconfig/nfsd ] && . /etc/sysconfig/nfsd # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then msg_network_down "NFS daemon" exit 1 fi else exit 0 fi if [ "$1" != "stop" ]; then check_portmapper || { nls "Error: portmap isn't running" && exit 0; } fi start() { # Check if the service is already running? if [ -f /var/lock/subsys/nfs ]; then msg_already_running "NFS daemon" return fi if ! grep -q nfsd /proc/mounts ; then modprobe -s nfsd > /dev/null 2>&1 run_cmd "Mounting /proc/fs/nfsd filesystem" mount -t nfsd nfsd /proc/fs/nfsd fi # Set the ports lockd should listen on if [ -n "$LOCKD_TCPPORT" ]; then /sbin/sysctl -w fs.nfs.nlm_tcpport=$LOCKD_TCPPORT >/dev/null 2>&1 fi if [ -n "$LOCKD_UDPPORT" ]; then /sbin/sysctl -w fs.nfs.nlm_udpport=$LOCKD_UDPPORT >/dev/null 2>&1 fi # Start daemons. msg_starting "NFS exportfs" daemon /usr/sbin/exportfs -r msg_starting "NFS mountd" daemon /usr/sbin/rpc.mountd $RPCMOUNTDOPTIONS msg_starting "NFS daemon" daemon /usr/sbin/rpc.nfsd $RPCNFSDCOUNT touch /var/lock/subsys/nfs } stop() { if [ ! -f /var/lock/subsys/nfs ]; then msg_not_running "NFS" return fi # Stop daemons. msg_stopping "NFS daemon" killproc nfsd -QUIT msg_stopping "NFS mountd" killproc rpc.mountd msg_stopping "NFS exportfs" daemon /usr/sbin/exportfs -au rm -f /var/lock/subsys/nfs } RETVAL=0 # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start /sbin/service idmapd status >/dev/null && /sbin/service idmapd reload /sbin/service svcgssd status >/dev/null && /sbin/service svcgssd restart ;; reload|force-reload) if [ -f /var/lock/subsys/nfs ]; then msg_reloading "NFS" busy /usr/sbin/exportfs -r [ $? -ne 0 ] && RETVAL=7 if [ $RETVAL -eq 0 ]; then ok /sbin/service idmapd status >/dev/null && /sbin/service idmapd reload /sbin/service svcgssd status >/dev/null && /sbin/service svcgssd restart else died fi else msg_not_running "NFS" exit 7 fi ;; probe) if [ ! -f /var/lock/subsys/nfs ]; then echo start exit 0 fi /sbin/pidof rpc.mountd >/dev/null 2>&1; MOUNTD="$?" /sbin/pidof nfsd >/dev/null 2>&1; NFSD="$?" if [ $MOUNTD = 1 -o $NFSD = 1 ]; then echo restart exit 0 fi if [ /etc/exports -nt /var/lock/subsys/nfs ]; then echo reload exit 0 fi ;; status) echo "Configured NFS exports:" grep -v "^#" /etc/exports echo echo "Active NFS exports:" /usr/sbin/exportfs -v echo status rpc.mountd RETVAL=$? status nfsd RET=$? [ $RETVAL -eq 0 ] && RETVAL=$RET ;; *) msg_usage "$0 {start|stop|restart|reload|force-reload|probe|status}" exit 3 esac exit $RETVAL