diff options
Diffstat (limited to 'abs/core/nfs-utils/nfsd')
-rwxr-xr-x | abs/core/nfs-utils/nfsd | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/abs/core/nfs-utils/nfsd b/abs/core/nfs-utils/nfsd new file mode 100755 index 0000000..ce891e2 --- /dev/null +++ b/abs/core/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 |