aboutsummaryrefslogtreecommitdiff
path: root/contrib/amd/scripts/ctl-amd.in
blob: ffd696d80144b901e2c3c1782784f8616f8cd316 (plain) (blame)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#!/bin/sh
# control starting, stopping, or restarting amd.
# usage: ctl-amd [start|stop|status|restart|condrestart|reload]
#
# Package:	am-utils-6.0
# Author:	Erez Zadok <ezk@cs.columbia.edu>
#
# chkconfig: - 72 28
# description: Runs the automount daemon that mounts devices and NFS hosts \
#	       on demand.
# processname: amd
# config: /etc/amd.conf
#

# set path
prefix=@prefix@
exec_prefix=@exec_prefix@
PATH=@sbindir@:@bindir@:/usr/ucb:/usr/bin:/bin:${PATH}
export PATH

# kill the named process(es)
killproc()
{
# first try to get PID via an amq RPC
pid=`amq -p 2>/dev/null`
if test "$pid" != ""
then
	kill $pid
	return 0
fi

# try bsd style ps
pscmd="ps axc"
pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
if test "$pid" != ""
then
	kill $pid
	return 0
fi

# try bsd44 style ps
pscmd="ps -x"
pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
if test "$pid" != ""
then
	kill $pid
	return 0
fi

# try svr4 style ps
pscmd="ps -e"
pid=`${pscmd} 2>/dev/null | grep "$1" | sed -e 's/^  *//' -e 's/ .*//'`
if test "$pid" != ""
then
	kill $pid
	return 0
fi

# failed
return 1
}

# search for amd.conf file
CF_FILE="${prefix}/etc/amd.conf"
# any local copy of the conf file overrides the "global" one
if [ -f /etc/amd.conf ]
then
	CF_FILE="/etc/amd.conf"
fi
if [ -f ${prefix}/etc/amd.conf ]
then
	CF_FILE="${prefix}/etc/amd.conf"
fi
if [ -f /etc/local/amd.conf ]
then
	CF_FILE="/etc/local/amd.conf"
fi

# if have the directory /tftpboot/.amd, then add a tag to include it
CF_TAG=""
if [ -d /tftpboot/.amd ]
then
	CF_TAG="-T tftpboot"
fi

case "$1" in
'start')
	# Start the amd automounter.
	if [ -x @sbindir@/amd ]
	then
		# do not specify full path of amd so killproc() works
		amd -F $CF_FILE $CF_TAG
		test -x /var/lock/subsys && touch /var/lock/subsys/amd
	fi
	;;

'stop')
	# prepend space to program name to ensure only amd process dies
	echo "killing amd..."
	killproc " amd"
	wait4amd2die
	test -f /var/lock/subsys/amd && rm -f /var/lock/subsys/amd
	;;

'restart')
	# kill amd, wait for it to die, then restart
	ctl-amd stop
	if [ $? != 0 ]
	then
		echo "NOT restarting amd!"
	else
		echo "Restarting amd..."
		sleep 1
		ctl-amd start
	fi
	;;

'condrestart')
     if [ -f /var/lock/subsys/amd ]; then
	    ctl-amd stop
	    ctl-amd start
	fi
     ;;

'reload')
	amq -f
	;;

'status')
	# run amq -v to produce status
	pid=`amq -p 2>/dev/null`
	if [ $? = 0 ]
	then
		echo "amd (pid $pid) is running..."
	else
		echo "amd is stopped"
	fi
	;;

# start_msg and stop_msg are for HPUX
'start_msg')
	echo "Start am-utils 6.0 automounter"
	;;
'stop_msg')
	echo "Stop am-utils 6.0 automounter"
	;;

*)
	echo "Usage: @sbindir@/ctl-amd [start|stop|status|restart|condrestart|reload]"
	;;
esac