blob: ce891e245d3f1731e1a5cb6464c346c086a779de (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
|