5656start_daemon ()
5757{
5858 # Process options.
59- local ANNOUNCE=1 BACKGROUND=' ' BASENAME=' ' CHECK=' ' CMDNAME=' ' DISPNAME=' ' EXPECT= ' ' FLAGS= ' ' LOCKFILE=' ' MAKE_PIDFILE=' ' NICE=0 PIDFILE=' ' STATUS= ' ' SU =' ' WHICH=' '
59+ local FLAGS ANNOUNCE=1 BACKGROUND=' ' BASENAME=' ' CHECK=' ' CMDNAME=' ' DISPNAME=' ' LOCKFILE=' ' MAKE_PIDFILE=' ' NICE=0 PIDFILE=' ' STATUS=' ' WHICH=' '
6060
6161 while [ " $1 " != " ${1## [-+]} " ]; do
6262 case " $1 " in
@@ -110,18 +110,25 @@ start_daemon()
110110 msg_usage " start_daemon [options]... {program}..."
111111 return 1
112112 fi
113+
113114 if [ -n " $CHECK " ] && [ -n " $CMDNAME " ]; then
114115 echo >&2 " start_daemon: --check and --name are mutually exclusive options"
115116 return 1
116117 fi
118+
117119 if [ -n " $CMDNAME " ] && [ -z " $PIDFILE " ]; then
118120 echo >&2 " start_daemon: --name is set but --pidfile is not set"
119121 return 1
120122 fi
121123
122124 # We need the absolute pathname.
123- [ -z " $CHECK " ] || CHECK=" $( absolute " $CHECK " ) " || return 1
124- WHICH=" $( absolute " $1 " ) " || return 1
125+ [ -z " $CHECK " ] ||
126+ CHECK=" $( absolute " $CHECK " ) " ||
127+ return 1
128+
129+ WHICH=" $( absolute " $1 " ) " ||
130+ return 1
131+
125132 if [ -n " $CMDNAME " ]; then
126133 BASENAME=" ${CMDNAME##*/ } "
127134 elif [ -n " $CHECK " ]; then
@@ -130,36 +137,34 @@ start_daemon()
130137 BASENAME=" ${1##*/ } "
131138 fi
132139 shift
133- [ -n " $BASENAME " ] || return 1
134- [ -n " $DISPNAME " ] || DISPNAME=" $BASENAME "
140+
141+ [ -n " $BASENAME " ] ||
142+ return 1
143+
144+ DISPNAME=" ${DISPNAME:- $BASENAME } "
135145
136146 [ " ${RDLOG-} " != ' console' ] ||
137147 ANNOUNCE=' '
138148
139- # Use a safe umask
140- # umask 077
141-
142- # Don't export these because they may be invalid under another UID and the
143- # directories may be gone while the daemon is still running.
144- local HOME=' ' TMP=' ' TMPDIR=' '
149+ FLAGS=(" --start" " -N" " $NICE " )
145150
146- FLAGS=" --start -N $NICE "
147151 if [ -n " $CMDNAME " ]; then
148- FLAGS= " $FLAGS --startas $WHICH --name $CMDNAME "
152+ FLAGS+=( " --startas" " $WHICH " " --name" " $CMDNAME " )
149153 elif [ -n " $CHECK " ]; then
150- FLAGS= " $FLAGS --exec $CHECK --startas $WHICH "
154+ FLAGS+=( " --exec" " $CHECK " " --startas" " $WHICH " )
151155 else
152- FLAGS= " $FLAGS --exec $WHICH "
156+ FLAGS+=( " --exec" " $WHICH " )
153157 fi
154- [ -z " $PIDFILE " ] || FLAGS= " $FLAGS --pidfile $PIDFILE "
155- [ -z " $BACKGROUND " ] || FLAGS= " $FLAGS $ BACKGROUND"
156- [ -z " $MAKE_PIDFILE " ] || FLAGS= " $FLAGS $ MAKE_PIDFILE"
158+ [ -z " $PIDFILE " ] || FLAGS+=( " --pidfile" " $PIDFILE " )
159+ [ -z " $BACKGROUND " ] || FLAGS+=( " $ BACKGROUND" )
160+ [ -z " $MAKE_PIDFILE " ] || FLAGS+=( " $ MAKE_PIDFILE" )
157161
158162 # Announce the action.
159- [ -z " $ANNOUNCE " ] || msg_starting " $DISPNAME "
163+ [ -z " $ANNOUNCE " ] ||
164+ msg_starting " $DISPNAME "
160165
161166 # Actually start the daemon.
162- start-stop-daemon $ FLAGS -- " $@ "
167+ start-stop-daemon " ${ FLAGS[@]} " -- " $@ "
163168 STATUS=$?
164169
165170 if [ $STATUS = 0 ]; then
@@ -173,13 +178,35 @@ start_daemon()
173178 return $STATUS
174179}
175180
181+ guess_basename_dispname ()
182+ {
183+ [ -n " $CMDNAME " ] &&
184+ BASENAME=" ${CMDNAME##*/ } " ||
185+ BASENAME=" ${NAME##*/ } " ||
186+ return 1
187+
188+ DISPNAME=" ${DISPNAME:- $BASENAME } "
189+ }
190+
191+ guess_pidfile ()
192+ {
193+ # Try to guess the PID file if one isn't specified manually.
194+ if [ -z " $PIDFILE " ]; then
195+ PIDFILE=" /var/run/$BASENAME .pid"
196+ [ -f " $PIDFILE " ] || PIDFILE=
197+ elif [ " $PIDFILE " = none ]; then
198+ PIDFILE=
199+ fi
200+ }
201+
176202stop_daemon ()
177203{
178204 # Process options.
179- local ANNOUNCE=1 BASENAME=' ' CMDNAME=' ' DEFAULT=true DISPNAME= ' ' EXPECT= ' ' FLAGS =' ' LOCKFILE=' ' MESSAGE=' ' NAME=' ' PIDFILE=' ' RETRY=' ' SIGNAL=' ' STATUS=' ' WHICH=' '
205+ local FLAGS ANNOUNCE=1 BASENAME=' ' CMDNAME=' ' DEFAULT=true DISPNAME=' ' LOCKFILE=' ' MESSAGE=' ' NAME=' ' PIDFILE=' ' RETRY=' ' SIGNAL=' ' STATUS=' ' WHICH=' '
180206
181207 # start-stop-daemon wants a signal number.
182208 SIGNAL=" $( /bin/kill -l TERM) " || SIGNAL=15
209+
183210 while [ $# -ge 1 ]; do
184211 case " $1 " in
185212 --) shift
@@ -234,51 +261,44 @@ stop_daemon()
234261 msg_usage " stop_daemon [options]... {program}..."
235262 return 1
236263 fi
237- WHICH=" $( absolute " $NAME " ) " || return 1
238- [ -n " $CMDNAME " ] &&
239- BASENAME=" ${CMDNAME##*/ } " ||
240- BASENAME=" ${NAME##*/ } " || return 1
241264
242- [ -n " $DISPNAME " ] || DISPNAME=" $BASENAME "
265+ WHICH=" $( absolute " $NAME " ) " ||
266+ return 1
243267
244268 [ " ${RDLOG-} " != ' console' ] ||
245269 ANNOUNCE=' '
246270
247- # Try to guess the PID file if one isn't specified manually.
248- if [ -z " $PIDFILE " ]; then
249- PIDFILE=" /var/run/$BASENAME .pid"
250- [ -f " $PIDFILE " ] || PIDFILE=
251- elif [ " $PIDFILE " = none ]; then
252- PIDFILE=
253- fi
271+ guess_basename_dispname
272+ guess_pidfile
254273
255274 if [ -n " $CMDNAME " ] && [ -z " $PIDFILE " ]; then
256275 echo " stop_daemon: --name is set but --pidfile is not set" >&2
257276 return 1
258277 fi
259278
260- FLAGS=" --stop -q"
279+ FLAGS=(" --stop" " -q" )
280+
261281 [ -z " $CMDNAME " ] &&
262- FLAGS=" $FLAGS --exec $WHICH " ||
263- FLAGS=" $FLAGS --name $CMDNAME "
264- [ -z " $PIDFILE " ] || FLAGS=" $FLAGS --pidfile $PIDFILE "
265- # [ -z "$RETRY" ] || FLAGS="$FLAGS --retry $RETRY"
282+ FLAGS+=(" --exec" " $WHICH " ) ||
283+ FLAGS+=(" --name" " $CMDNAME " )
266284
267- if [ " $DEFAULT " = true ]; then
268- MESSAGE=" $BASENAME shutdown"
269- else
270- MESSAGE=" sending signal $SIGNAL to $BASENAME "
271- fi
285+ [ -z " $PIDFILE " ] ||
286+ FLAGS+=(" --pidfile" " $PIDFILE " )
272287
273288 # Announce the action.
274- [ -z " $ANNOUNCE " ] || msg_stopping " $DISPNAME "
289+ [ -z " $ANNOUNCE " ] ||
290+ msg_stopping " $DISPNAME "
275291
276292 # Actually tell the daemon to stop.
277- start-stop-daemon $ FLAGS --signal " $SIGNAL "
293+ start-stop-daemon " ${ FLAGS[@]} " --signal " $SIGNAL "
278294 STATUS=$?
279295
296+ [ " $DEFAULT " = true ] &&
297+ MESSAGE=" $BASENAME shutdown" ||
298+ MESSAGE=" sending signal $SIGNAL to $BASENAME "
299+
280300 if [ $STATUS = 0 ]; then
281- [ -z " $PIDFILE " ] || rm -f " $PIDFILE "
301+ [ -z " $PIDFILE " ] || rm -f " $PIDFILE "
282302 [ -z " $LOCKFILE " ] || rm -f " $LOCKFILE "
283303 [ " $BOOTUP " != verbose ] || echo -n " $DISPNAME "
284304 success " $MESSAGE "
@@ -298,7 +318,7 @@ status()
298318 fi
299319
300320 # Process options.
301- local BASENAME=' ' CMDNAME=' ' DISPNAME= ' ' EXPECT= ' ' FLAGS =' ' LOCKFILE=' ' PIDFILE=' ' WHICH=' '
321+ local FLAGS BASENAME=' ' CMDNAME=' ' DISPNAME=' ' LOCKFILE=' ' PIDFILE=' ' WHICH=' '
302322
303323 while [ " $1 " != " ${1## -} " ]; do
304324 case " $1 " in
@@ -332,35 +352,30 @@ status()
332352 msg_usage " status [options]... {program}"
333353 return 1
334354 fi
335- WHICH=" $( absolute " $1 " ) " || return 1
336- [ -n " $CMDNAME " ] &&
337- BASENAME=" ${CMDNAME##*/ } " ||
338- BASENAME=" ${1##*/ } " || return 1
339355
340- [ -n " $DISPNAME " ] || DISPNAME=" $BASENAME "
356+ WHICH=" $( absolute " $1 " ) " ||
357+ return 1
341358
342- # Try to guess the PID file if one isn't specified manually.
343- if [ -z " $PIDFILE " ]; then
344- PIDFILE=" /var/run/$BASENAME .pid"
345- test -f " $PIDFILE " || PIDFILE=
346- elif [ " $PIDFILE " = none ]; then
347- PIDFILE=
348- fi
359+ guess_basename_dispname
360+ guess_pidfile
349361
350362 if [ -n " $CMDNAME " ] && [ -z " $PIDFILE " ]; then
351363 echo " status: --name is set but --pidfile is not set" >&2
352364 return 1
353365 fi
354366
355367 # Actually determine the status.
356- FLAGS=" --stop --test"
357- [ -z " $CMDNAME " ] &&
358- FLAGS=" $FLAGS --exec $WHICH " ||
359- FLAGS=" $FLAGS --name $CMDNAME "
360- [ -z " $PIDFILE " ] || FLAGS=" $FLAGS --pidfile $PIDFILE "
368+ FLAGS=(" --stop" " --test" )
369+
370+ [ -n " $CMDNAME " ] &&
371+ FLAGS+=(" --name" " $CMDNAME " ) ||
372+ FLAGS+=(" --exec" " $WHICH " )
373+
374+ [ -z " $PIDFILE " ] ||
375+ FLAGS+=(" --pidfile" " $PIDFILE " )
361376
362377 # Report it.
363- if start-stop-daemon $ FLAGS > /dev/null; then
378+ if start-stop-daemon " ${ FLAGS[@]} " > /dev/null; then
364379 echo " $DISPNAME is running"
365380 return 0
366381 fi
@@ -370,8 +385,7 @@ status()
370385 return 1
371386 fi
372387
373- [ -n " $LOCKFILE " ] || LOCKFILE=" /var/lock/subsys/$BASENAME "
374- if [ -f " $LOCKFILE " ]; then
388+ if [ -f " ${LOCKFILE:-/ var/ lock/ subsys/ $BASENAME } " ]; then
375389 echo " $DISPNAME is dead, but subsystem is locked"
376390 return 2
377391 fi
@@ -444,6 +458,13 @@ echo_passed()
444458 return 1
445459}
446460
461+ msg_starting () { echo_msg " Starting $1 service: " ; }
462+ msg_stopping () { echo_msg " Stopping $1 service: " ; }
463+ msg_reloading () { echo_msg " Reloading $1 service: " ; }
464+ msg_already_running () { echo_msg " Service $1 is already running." ; }
465+ msg_not_running () { echo_msg " Service $1 is not running." ; }
466+ msg_usage () { printf " Usage: %s\n" " $* " >&2 ; }
467+
447468# Log that something succeeded
448469success ()
449470{
@@ -509,34 +530,3 @@ action_shell()
509530 [ $rc -eq 0 ] && success " $STRING " || failure " $STRING "
510531 return $rc
511532}
512-
513- msg_starting ()
514- {
515- echo_msg " Starting $1 service: "
516- }
517-
518- msg_already_running ()
519- {
520- echo_msg " Service $1 is already running."
521- }
522-
523-
524- msg_stopping ()
525- {
526- echo_msg " Stopping $1 service: "
527- }
528-
529- msg_not_running ()
530- {
531- echo_msg " Service $1 is not running."
532- }
533-
534- msg_reloading ()
535- {
536- echo_msg " Reloading $1 service: "
537- }
538-
539- msg_usage ()
540- {
541- printf " Usage: %s\n" " $* " >&2
542- }
0 commit comments